Gambas - Problema con inserccion de registros sqlite y camp

 
Vista:

Problema con inserccion de registros sqlite y camp

Publicado por openGluco (1 intervención) el 20/02/2009 10:26:59
Hola a todos, estoy desarrollando una aplicación en gambas y me he
topado con un problema que me tiene en pausa hace ya unos días, les
explico a continuación el mismo:

Tengo una aplicación que mediante base de datos sqlite3 registra una
serie de datos en su bd. Cada dato esta identificado con un campo
llamado id de tipo autonumerico. La idea es que cada nuevo registro
automaticamente se cree una id que haga referencia a el.

Bien, hasta ahi todo correcto. El problema biene cuando este campo lo
dejo en blanco (para que tome un numero incrementado) y relleno todos
los datos del formulario (fecha,hora,etc...) cuando le doy a enviar no
me graba la informacion en la bd.

Cuando en vez de dejar este campo vacio, le asigno mediante un texbox un
valor, se graba sin problemas, pero yo quiero que ese valor no tenga que
insertarlo yo si no que al dar de alta u registro este se cree solo.

Cuando el alta de un nuevo registro lo hago mediante el gestor de base
de datos que trae gambas, y dejo el campo id en blanco, este si toma su
valor automaticamente grabando sin problemas el registro.

A continuación os muestro el codigo fuente del formulario que se encarga
de hacer esta operacion en mi aplicacion:

CODIGO:

PRIVATE Editando AS Boolean
PRIVATE hResul AS Result
PRIVATE hconn AS Connection

PUBLIC SUB RunNew(Data AS Connection)

hconn = Data
ME.ShowModal()
END

PUBLIC SUB RunEdit(Data AS Result)

hResul = Data
Editando = TRUE
Textbox_id.Text = hResul["id"]
Textbox_fecha.Text = hResul["fecha"]
TextBox_hora.Text = hResul["hora"]
TextBox_glucosa.Text = hResul["glucosa"]
TextBox_observaciones.Text = hResul["observaciones"]
ME.ShowModal()

END
PUBLIC SUB BtnCancelar_Click()
ME.Close()
END

PUBLIC SUB BtnAceptar_Click()

IF Editando THEN
TRY hResul["id"] = Textbox_id.Text
TRY hResul["fecha"] = Textbox_fecha.Text
TRY hResul["hora"] = TextBox_hora.Text
TRY hResul["glucosa"] = TextBox_glucosa.Text
TRY hResul["observaciones"] = TextBox_observaciones.Text
TRY hResul.Update()
ELSE
TRY hconn.Exec("insert into datos_glucemia values (&1, &2, &3, &4,
&5)", Textbox_id.Text, Textbox_fecha.Text, TextBox_hora.Text,
TextBox_glucosa.Text, TextBox_observaciones.Text)
'Al soltar el boton Aceptar se cierra la ventana de introducc ón de
datos.
ME.Close()

ENDIF
END

He probado borrando todo lo referente al campo id , asumiento que la bd
lo creara solo pero nada de nada, asi que ahora tengo que insertar
forzosamente este campo para que el formulario inserte los datos.

El campo id esta dado de alta como primary key not null y autonumerico.

ESTRUCTURA DB

CREATE TABLE 'datos_glucemia' ( 'id' INTEGER PRIMARY KEY AUTOINCREMENT ,
'fecha' DATETIME, 'hora' DATETIME, 'glucosa' FLOAT8, 'observaciones'
TEXT )

Muchas gracias a todos por adelantado por su ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema con inserccion de registros sqlite y c

Publicado por Mike79 (9 intervenciones) el 20/02/2009 20:32:56
¿Has intentado que el query sea?:

TRY hconn.Exec("insert into datos_glucemia values (NULL, &1, &2, &3,
&4)", Textbox_fecha.Text, TextBox_hora.Text,
TextBox_glucosa.Text, TextBox_observaciones.Text)

Tu pregunta no tiene que ver con Gambas, tiene que ver con SQLite
Revisa la documentación de SQLite:
http://www.sqlite.org/

O bien en las preguntas frecuentes:
http://www.sqlite.org/faq.html

En la primera pregunta dice claramente como hacer un autoincrement.

Saludos!
-
Mike79
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar