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
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


0