https://foro.gambas-es.org/viewtopic.php?f=3&t=1919&p=11279#p11279
-----------------------------------
Shell
Viernes, 23 Septiembre 2011, 09:14

Ejemplo De Base De Datos En Libro No Funciona Del Todo Correctamente
-----------------------------------
Hola Comunidad!.

Ya que nadie nunca ha dicho nada, (creo que yo si), el ejemplo no funciona del todo correctamente:
No me creo que con todos los que somos, nadie haya dicho que el ejemplo no funciona. :???

- Puedes modificar registro.
- No puedes crear un registro nuevo.

Llevaba varios días intentando de encontrar una respuesta al problema, pero no la vi en ninguna
base de datos de los ejemplos que conocemos.

Después de leer un poco sobre SQLite, estaba creando un ejemplo de Bdd desde linea de comandos.
Y comprobé que no era necesario especificar todos los campos para entrar un registro.

Con SQlite3 instalado.Fui a linea de comandos y entre: 

[code linenumbers=false syntax=gambas]
>sqlite3 Prueba.db

sqlite> create table Prueba (id integer primary key, nombre text);
sqlite>insert into Prueba (id,nombre) values(1,'Juan');
sqlite>insert into Prueba (id,nombre) values(2,'José');
sqlite>insert into Prueba (nombre) values('Antonio');
sqlite>insert into Prueba (nombre) values('Pedro');

sqlite> .mode column
sqlite> .headers on
sqlite> select * from Prueba;
[/code]

El final fue dos columnas con cada campo y sus valores debajo.(Lo pegue aquí, pero no me salio muy bien :oops: )

A lo que voy: 
Donde inserte Antonio y Pedro no hay valor especificado para el campo id
No pude hacerlo de la misma manera en Gambas.

Aprendí hacerlo en gambas.Me encontré el problema del campo clave.En el ejemplo de la base de datos del
libro de Gambas.Pone como campo clave en la base de datos el id, aunque lo ponga numérico, lo puse autonumérico.
Vale.Ademas y digo yo.Si en la base de datos pone id como campo clave,¿ por que luego en el código utiliza titulo ?... :neutral: 

No tenia ni la mas remota idea de que hacer con ese campo.Por que en la base de datos no hace referencia a un incremento
ni a ponerlo directamente en una caja de texto.

En la creación de un registro nuevo en el libro pone:

[code linenumbers=false syntax=gambas]
TRY hConn.Exec("insert into datos values (&1,&2,&3,&4,&5)", TxtTitulo.Text, TxtAutor.Text, CDate(TxtFecha.Text), CFloat(TxtPrecio.Text), TxtDecripcion.Text)
[/code]

Cuando en realidad debería ser:
[code linenumbers=false syntax=gambas]
TRY hConn.Exec("insert into datos values (&1,&2,&3,&4,&5,&6)", NULL, TxtTitulo.Text, TxtAutor.Text, CDate(TxtFecha.Text), CFloat(TxtPrecio.Text), TxtDecripcion.Text)
[/code]

Esa constante NULL me logro que el campo autonumérico incrementase su valor automáticamente.
¿ Que significa NULL realmente en la entrada del registro ?. No hay una caja de texto especifica para este campo, ya que no
hace falta.

¿ Como que parece tan diferente escribir en shell la creación de la base de datos con respecto a gambas ?.
(Me refiero a las sentencias entre comillas).


