Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-06-2008
Avatar de geolife
[geolife] geolife is offline
Miembro Premium
 
Registrado: nov 2006
Ubicación: Barcelona
Posts: 87
Poder: 18
geolife Va por buen camino
Insert con DataControls campos Not Null

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:

Código SQL [-]
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:
Código SQL [-]
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 '':


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

Última edición por geolife fecha: 30-06-2008 a las 19:23:04.
Responder Con Cita
  #2  
Antiguo 30-06-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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 [-]
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 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
Responder Con Cita
  #3  
Antiguo 30-06-2008
Avatar de geolife
[geolife] geolife is offline
Miembro Premium
 
Registrado: nov 2006
Ubicación: Barcelona
Posts: 87
Poder: 18
geolife Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 02-07-2008
Avatar de geolife
[geolife] geolife is offline
Miembro Premium
 
Registrado: nov 2006
Ubicación: Barcelona
Posts: 87
Poder: 18
geolife Va por buen camino
MyDac y Zeos.

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 no me genera ningún error. Creo que el problema está en que ZEOS no lee adecuadamente el valor por defecto.

--------

// Saludos[/quote]
Responder Con Cita
  #5  
Antiguo 02-07-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por geolife Ver Mensaje
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
Responder Con Cita
  #6  
Antiguo 02-07-2008
Avatar de geolife
[geolife] geolife is offline
Miembro Premium
 
Registrado: nov 2006
Ubicación: Barcelona
Posts: 87
Poder: 18
geolife Va por buen camino
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.


Cita:
Empezado por roman Ver Mensaje
ZEOS no está mal, pero me parecen más completos los de MyDac, y el precio se me hace bastante accesible.

// Saludos
Responder Con Cita
  #7  
Antiguo 11-07-2008
Avatar de geolife
[geolife] geolife is offline
Miembro Premium
 
Registrado: nov 2006
Ubicación: Barcelona
Posts: 87
Poder: 18
geolife Va por buen camino
Problema solucionado...

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.


Cita:
Empezado por roman Ver Mensaje
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 [-]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 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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
manejo de campos de datos null pmtzg Conexión con bases de datos 2 29-05-2008 01:47:17
Consulta en campos Null| pmtzg Conexión con bases de datos 2 26-02-2008 01:38:51
tEdit y campos NOT NULL pablonill SQL 3 02-12-2007 01:00:50
Campos null. Asignación jlrbotella Conexión con bases de datos 3 23-03-2007 16:26:27
Campos Not null de MSQL emeritos SQL 6 13-01-2007 08:29:02


La franja horaria es GMT +2. Ahora son las 23:25:26.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi