SQLITE problemas para insertar registros a sqlite desde VFP

549 views
Skip to first unread message

José A.M.

unread,
Jan 29, 2018, 8:57:00 PM1/29/18
to Comunidad de Visual Foxpro en Español
Saludos amigos ojala puedan ayudarme, tengo una base de datos en SQLITE a la que despues de varios intentos he logrado accesar y hacerle un selec para verla, tambien he logrado borrar registros, pero no puedo insertar e intentado muchas formas pero nada, mi cadena de coneccion es la siguiente y funciona:

lnHandle=Sqlstringconnect("DRIVER={SQLite3 ODBC Driver}; Database=E:\SQLITECON\bdfacturador.db;")

La consulta tambien funciona:

SQLExec(lnHandle, "select * from TXXXX_BANDFACT",  lcAlias)

el borrado tambien funciona:

sqlexec(lnhandle, "DELETE FROM TXXXX_BANDFACT WHERE NUM_DOCU=?A4")

El valor de la variable A4='00000001'

pero el problema que no puedo resolver esta en la insercion, he probado todas estas formas:

        sqlexec(lnhandle, "INSERT INTO TXXXX_BANDFACT NUM_RUC VALUE ?A5")
sqlexec(lnhandle, "INSERT INTO TXXXX_BANDFACT (NUM_RUC) VALUES (?A5)")
sqlexec(lnhandle, "INSERT INTO TXXXX_BANDFACT (NUM_RUC) VALUES (A5)")
sqlexec(lnhandle, "insert into TXXXX_BANDFACT (Num_Ruc) VALUES ('44444444')")

el valor de mi variable A5 es '44444444', tanto he probado que hasta la he puesto directamente como ven, con el signo de interrogacion, entre comillas simples, dobles, he cargado el comando en una variable y nada, siempre me arroga como resultado -1 es decir no inserta y lo he verificado.

mi base de datos contiene la tabla en mencion y muchos mas campos, con el que estoy probando es alfanumerico por lo que no deberia darme problemas, uso VFP9

Me queda claro que el comando debo cargarlo a una variable pero como estoy por fundir fusibles es que lo hago directamente hasta lograr la insercion, luego lo hare mas prolijamente, pero lo que necesito es insertar y depaso si me dan una ayudadita la instruccion para actualizar un registro. GRACIAS.


Carlos Miguel FARIAS

unread,
Jan 30, 2018, 6:15:24 AM1/30/18
to Grupo Fox
Los campos de la tabla que no le insertas datos tienen valores por omisión (default)?
En vfp, un insert mete campos en blanco (o) cero en los campos no indicados (como hace un asqueroso APPEND BLANK) pero en SQLite, no hay problema con el tipo de datos que insertas (en realidad, internamente, todo es texto y podes meter cualquier cosa en cualquier campo y  en general no da errores por el tipo de dato declarado).
Si usas ODBC para conectarte, después del sqlexec, utilza AERROR para recuperar el posible error producido, fijate en la ayuda para ver como interpretar lo que pone AERROR en el arreglo correspondiente.
Saludos: Miguel, La Pampa (RA)
Larga Vida y Prosperidad
Que la Fuerza los acompañe, Fox es Fox, los otros son SGBD

William Jara

unread,
Oct 31, 2018, 10:02:53 AM10/31/18
to Comunidad de Visual Foxpro en Español
Buen dia, alguien puede facilitar el usuario y password para abrir BDFacturador.db desde una conexion ODBC?

Jorge L. Florez C.

unread,
Oct 31, 2018, 10:18:52 AM10/31/18
to publice...@googlegroups.com
Hola
Y probaste la instrucción insert desde el mismo SQL?

Saludos
Jorge Florez
Lima - Perú

Fabian Andres Vanegas Soto

unread,
Oct 31, 2018, 11:40:09 AM10/31/18
to publice...@googlegroups.com
que pasa si ejecutas la cadena de inserción directamente en el motor que resultado arroja?

Martín E. Lezama

unread,
Oct 31, 2018, 11:59:18 AM10/31/18
to publice...@googlegroups.com
Podes tener el siguiente problema,se me ocurre. Si la tabla tiene más campos que ese, todos esos campos deben estar definidos para aceptar valores null.

Las versiones de Sql que yo vi hasta acá no son como VFP. En VFP vos hacías un insert de registros, y los campos que no declarabas en el insert te los agregaba vacíos. En SQL esos campos se agregan como Null pero guarda, porque si vos definíste que los campos no acepten valores null, ahí tenes tu problema. 

Espero que te sirva, abrazo! 

Carlos Miguel FARIAS

unread,
Oct 31, 2018, 1:29:46 PM10/31/18
to publice...@googlegroups.com
Gente. El hilo original es de enero de este año. Alguien lo usa para preguntar algo que no tendría nada que ver (una password para una base de datos) y salen a dar soluciones sobre el hilo original.
Hoy es Miércoles, es Hallowen?
Saludos Miguel:
Larga Vida o Truco

Martín E. Lezama

unread,
Oct 31, 2018, 1:49:13 PM10/31/18
to publice...@googlegroups.com
Jajaja mala mía. En el celu las fechas me aparecen muy chiquitas (o yo ya estoy muy chicato). 

William Jara

unread,
Oct 31, 2018, 10:50:05 PM10/31/18
to Comunidad de Visual Foxpro en Español
Buenas noches, ya logre conectarme a la base de datos, el problema es que al momento de hacer un select desde VFP, me genera un cursor pero los campos de tipo datetime se muestra .NULL:

la linea que uso para hacer el select es

SQLExec(lnhandle, "SELECT * from DOCUMENTO","registros")

intenté con

SQLExec(lnhandle, "SELECT strftime('%d/%m/%Y %H:%M:%S',FEC_CARG) from DOCUMENTO","registros")

el rsultado fue el mismo

cambie el set date  y nada

alguien me puede ayudar con la solución?

Carlos Vargas

unread,
Nov 1, 2018, 1:33:16 PM11/1/18
to Comunidad de Visual Foxpro en Español
Si no estoy mal, el tipo de campo date o time, o datetime no existe en sqllite, aca se usa un campo de tipo int, para almacenarlo, creo que hay una opción el drive odbc para que realize la conversion.
Julian day convert podria ser.
entonces para las fechas se almacenan como tipo entero, y me creo que igual las recupera, seria ver como funciona lo de esta conversion.

2018-11-01 11_31_20-Window.png

Mary

unread,
Nov 1, 2018, 5:43:59 PM11/1/18
to Comunidad de Visual Foxpro en Español
yo almaceno las fechas como texto en sql lite


William Jara

unread,
Nov 3, 2018, 7:55:20 PM11/3/18
to Comunidad de Visual Foxpro en Español
Sigo con el mismo problema, para ilustrar un poco les adjunto los pantallazos:

La cadena de conexion es     lnHandle=Sqlstringconnect("DRIVER={SQLite3 ODBC Driver}; Database=D:\SFS_v1.2\bd\bdfacturador.db;")

Instale el DB Browser For SQLite y si muestra la estructura de la tabla con DATETIME

SQLite_1.png


en la navegacion muestra los datos de fecha como debe ser

SQLite_2.png


Al hacer un BROWSE en VFP luego de ejecutar la orden SQLExec(lnhandle, "SELECT * from DOCUMENTO","registros")

SQLite_3.png


Los campos o columnas referentes a las columnas de tipo datetime muestra .NULL.

He probado con la orden SQLExec(lnhandle, "SELECT CAST(fec_carg as character(10)) from DOCUMENTO","registros"), pero me genera campo de tipo MEMO
 cambie a character(20) e igual genera campo tipo MEMO
Reply all
Reply to author
Forward
0 new messages