PDA

Ver la Versión Completa : Insert con DataControls campos Not Null


geolife
30-06-2008, 13:21:17
Queridos compañeros,:)

Estoy migrando una aplicación paradox a Mysql, usando Zeos 6.6.2 RC y tengo una duda con los campos Not Null.

Como ejemplo, esta tabla:

Create table `Articulos`(
`CODIGO` varchar(40),
`ARTICULO` varchar(60),
`COLOR` varchar(30) NOT NULL,
primary key (`CODIGO`)
) type=InnoDB;


Si hago una inserción directamente con código SQL, como la siguiente:
INSERT INTO `articulos` ( `CODIGO`
)
VALUES ( '123'
)
todo va bien, el servidor se encarga automáticamente de rellenar los campos Not Nul con un vacío ''::o


Sin embargo, si actualizo mediente un DBGrid utilizando un TZQuery.Insert ..... TZquery.Post y queda en blanco, por ejemplo el campo Color, se obtiene el error: Column "Color" cannot be null :confused: - ¿Se podria insertar mediante un DbGrid asociado a un TZquery, sin tener que dar un valor concreto a los campos Not Null, como con la sentencia SQL Insert To....?.

Os agradezco vuestra ayuda.


Geolife.

roman
30-06-2008, 19:22:08
Tal como pones la estructura de la tabla, a mi me marca el error tanto si lo hago directamente o através de controles. La definición de la tabla tendría que ser:


Create table `Articulos`(
`CODIGO` varchar(40),
`ARTICULO` varchar(60),
`COLOR` varchar(30) NOT NULL default '',
primary key (`CODIGO`)
) type=InnoDB;


Ahora bien, cuando lo hago así, observo lo mismo que tú. He estado revisando y me parece que es un error de ZEOS, ya que si uso los componentes MyDac (http://www.devart.com/mydac/) no me genera ningún error. Creo que el problema está en que ZEOS no lee adecuadamente el valor por defecto.

Lo puedes solucionar asignando manualmente ese valor en el evento OnNewRecord del ZQuery o ZTable que uses.

// Saludos

geolife
30-06-2008, 19:34:29
Roman,

Muchísimas gracias por revisar este error. Como comentas, debe ser ser un problema de los componenes Zeos, me estaba rompiendo la cabeza...

La verdad es que los componenetes Zeos son bastante interesantes, pero tienen algunos detalles como este, o la conversión de campos Booleanos, que podrian mejorarse...lastima que no tengamos aqui, ningún responsable de desarrollo de la biblioteca ZeosLib que hable español.

De verdad, muy agredecido!

Geolife.:)

geolife
02-07-2008, 18:45:38
Hola Roman,

Hasta ahora no conocía mucho los componentes de acceso MyDac para MySql, los cuales citaste en tu mensaje...Pensaba que Zeos era la elección para MySql y delphi (no quiero decir, que no sigan siendo unos muy buenos componentes), pero tras algunas pruebas iniciales con MyDac, se antoja, una alternativa seria y muy recomendable.

Gracias por la sugerencia!

Geolife.

Ahora bien, cuando lo hago así, observo lo mismo que tú. He estado revisando y me parece que es un error de ZEOS, ya que si uso los componentes MyDac (http://www.devart.com/mydac/) no me genera ningún error. Creo que el problema está en que ZEOS no lee adecuadamente el valor por defecto.

--------

// Saludos[/quote]

roman
02-07-2008, 18:48:43
Hasta ahora no conocía mucho los componentes de acceso MyDac para MySql, los cuales citaste en tu mensaje...Pensaba que Zeos era la elección para MySql y delphi (no quiero decir, que no sigan siendo unos muy buenos componentes), pero tras algunas pruebas iniciales con MyDac, se antoja, una alternativa seria y muy recomendable.

ZEOS no está mal, pero me parecen más completos los de MyDac, y el precio se me hace bastante accesible.

// Saludos

geolife
02-07-2008, 18:58:01
Cierto Roman, el precio es bastante asequible e incluso tienen version para Linux, ... invertir un poco de dinero a veces nos ahorra mucho tiempo y dolores de cabeza.


ZEOS no está mal, pero me parecen más completos los de MyDac, y el precio se me hace bastante accesible.

// Saludos

geolife
11-07-2008, 12:40:29
Hola Roman,

Actualizo el hilo para comentar, que el bug de Zeos que indicamos sobre la lectura incorrecta del valor Default en valores Not Nul (MySQL) versión ZEOS 6.6.2 RC, ha sido resuelto en las versiones de desarrollo actuales de Zeos.

En concreto a partir de la rama 368 actualizada el 14 mayo 2008, ya no existe este problema. Dejo aquí el enlace a las versiones en desarrollo y testing por si alguien se tropieza con el mismo inconveniente...:)

http://zeosdownload.firmos.at/downloads/snapshots/

Saludos,

Sebas.


Tal como pones la estructura de la tabla, a mi me marca el error tanto si lo hago directamente o através de controles. La definición de la tabla tendría que ser:

Código SQL [-] (http://www.clubdelphi.com/foros/#)Create table `Articulos`( `CODIGO` varchar(40), `ARTICULO` varchar(60), `COLOR` varchar(30) NOT NULL default '', primary key (`CODIGO`) ) type=InnoDB;


Ahora bien, cuando lo hago así, observo lo mismo que tú. He estado revisando y me parece que es un error de ZEOS, ya que si uso los componentes MyDac (http://www.devart.com/mydac/) no me genera ningún error. Creo que el problema está en que ZEOS no lee adecuadamente el valor por defecto.

Lo puedes solucionar asignando manualmente ese valor en el evento OnNewRecord del ZQuery o ZTable que uses.

// Saludos