https://foro.gambas-es.org/viewtopic.php?f=3&t=394
-----------------------------------
aristicol
Domingo, 31 Enero 2010, 19:03

Campo Boolean En Sqlite3 (Solucionado)
-----------------------------------
Hola a todos y Gracias por adelantado.

Estoy queriendo actualizar el valor de unos campos de una tabla (Base de datos Sqlite3) entre los campos que deseo actualizar están dos de tipo Integer y uno Boolean.


Así me da error:

 [img]http://foro.gambas-es.org/files/images/59/sql.png[/img] 

PUBLIC FUNCTION GuardarRetornoEnvace(NEnv AS Integer, DEnv AS Integer)


FMain.ConectarBase.Exec("UPDATE Envaces SET NEnvase = " & NEnv & ", DepEnvase = " & DEnv [b]& ", Entregado = " & IIf(NEnv = 0, TRUE, FALSE)[/b] & " WHERE idemb = " & CInt(ColumnView2.Current[0]))

End

Así también da error:

PUBLIC FUNCTION GuardarRetornoEnvace(NEnv AS Integer, DEnv AS Integer)

FMain.ConectarBase.Exec("UPDATE Envaces SET NEnvase = " & NEnv & ", DepEnvase = " & DEnv [b]& ", Entregado = " & IIf(NEnv = 0, "True", "False")[/b] & " WHERE idemb = " & CInt(ColumnView2.Current[0]))

End

El problema esta en la parte Boolean, sin ese fragmento hace la actualización correcta.

Gracias por la ayuda que me pueda dar.


-----------------------------------
nrcefe
Domingo, 31 Enero 2010, 22:56

Re: Campo Boolean En Sqlite3
-----------------------------------
[url=http://www.sqlite.org/datatype3.html#boolean]documentacion sqlite:
[cell class=spoiler]SQLite does not have a separate Boolean storage class. Instead, Boolean values are stored as integers 0 (false) and 1 (true).[/cell]

traduccion google

[cell class=spoiler]SQLite no tiene una clase de almacenamiento por separado de Boole. En cambio, los valores booleanos [color=crimson]se almacenan como números[/color] enteros [color=crimson]0[/color] (falso) [color=crimson]y 1[/color] (verdadero).[/cell]


por lo tanto la consulta deberia ser :

[cell class=spoiler]FMain.ConectarBase.Exec("UPDATE Envaces SET NEnvase = " & NEnv & ", DepEnvase = " & DEnv & ", Entregado = " & IIf(NEnv = 0, 1, 0) & " WHERE idemb = " & CInt(ColumnView2.Current[0])) 

End[/cell]


saludos


-----------------------------------
aristicol
Domingo, 31 Enero 2010, 23:08

Re: Campo Boolean En Sqlite3 (Solucionado)
-----------------------------------
Listo Analizando encontré lo siguiente:

Este tipo de Campo boolean en Sqlite3 manejan realmente valor 0 = False 1 = True, cualquiera entre ello me incluyo espera poder llenar esta campo de forma intuitiva, osea enviando False o True en ese momento es cuando se comete el error debemos enviar es 0 o 1.

Asi:

 FMain.ConectarBase.Exec("UPDATE Envaces SET NEnvase = " & NEnv & ", DepEnvase = " & DEnv & ", Entregado = " & IIf(NEnv = 0, 1, 0) & " WHERE idemb = " & CInt(ColumnView2.Current[0]))


Aun es mas confuso cuando el gestor de base de datos  de Gambas nos muestra contenido de False y True

Gestor de Base de datos de gambas:

 [img]http://foro.gambas-es.org/files/images/59/pantallazo_3.png[/img] 

Examinado datos:

 [img]http://foro.gambas-es.org/files/images/59/pantallazo_2.png[/img] 

Mientras que desde el SQLITE DATABASE BROWSER

 [img]http://foro.gambas-es.org/files/images/59/pantallazo_4.png[/img] 


Listo de esa forma salí del inconveniente se debe enviar 0 o 1 a un campo Boolean en Sqlite.



EDITADO PARA DECIR LO SIGUIENTE:

Agrego esto después de haber posteado porque el foro no me deja dar otra respuesta, debería permitirse:

Gracias nrcefe,  creo que cuando estaba redactando esta solución, tu ya habías respondido.


