Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   tEdit y campos NOT NULL (https://www.clubdelphi.com/foros/showthread.php?t=50912)

pablonill 01-12-2007 19:08:11

tEdit y campos NOT NULL
 
Hola, les comento lo siguiente tengo una tabla algo así

Código SQL [-]
CREATE TABLE prueba
(id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  detalle VARCHAR(45) NOT NULL, PRIMARY KEY (id)
)


Hasta aquí todo bien, el tema es el siguiente cuando en delphi hago lo siguiente.

Código Delphi [-]
SqlQuery1.Close;
SqlQuery1.SQL.Clear;
SqlQuery1.SQL.Add('INSERT INTO prueba (detalle) VALUES (:Pr1)');
SqlQuery1.ParamByName('Pr1').Value := Edit1.Text;
SqlQuery.ExecSQL;

Todo perfecto, añade el valor peroo, si el Edit esta vacío, lo mismo lo inserta sin crear una excepción porque el campo esta vacío (propiedad NOT NULL), entonces la pregunta es la siguiente, hay alguna forma de que el Edit me devuelva un valor NULL en caso de que este este vacío. (se me ocurren varias soluciones poco ortodoxas, pero quisiera la correcta, no es que sea molesto solo que quisiera hacer la programación SQL en el motor y la interfase en delphi) Espero haber sido claro. Muchas gracias por su tiempo!

P.D: Uso ibexpress y mysql. (Tube el mismo problema con ado y access)

marcoszorrilla 01-12-2007 20:55:00

[quote=pablonill;249811]Hola, les comento lo siguiente tengo una tabla algo así
Código Delphi [-]
Código SQL [-]CREATE TABLE prueba
(id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  detalle VARCHAR(45) NOT NULL, PRIMARY KEY (id)
)



Hasta aquí todo bien, el tema es el siguiente cuando en delphi hago lo siguiente.

Código Delphi [-]SqlQuery1.Close;
SqlQuery1.SQL.Clear;
SqlQuery1.SQL.Add('INSERT INTO prueba (detalle) VALUES (:Pr1)');
SqlQuery1.ParamByName('Pr1').Value := Trim(Edit1.Text);
SqlQuery.ExecSQL;
Has probado la opción que subrayo?

Un Saludo.

pablonill 02-12-2007 00:36:31

Si, ya lo probe y sigue con lo mismo, yo sigo averiguando y cualquier cosa aviso. Muchas gracias.

pablonill 02-12-2007 01:00:50

Espero que le pueda servir para alguien
 
Bueno, estuve investigando y esto es lo mas fino que pude lograr.

Código Delphi [-]
function EsVacio(Cadena: string): variant;
begin
  if Trim(Cadena)='' then
    EsVacio := NULL
  else
    EsVacio := Cadena;
end;

y lo llamo asi

Código Delphi [-]
SqlQuery1.Close;
  SqlQuery1.SQL.Clear;
  SqlQuery1.SQL.Add('INSERT INTO Temp (Detalle)  VALUES (:Pr1)');
  SqlQuery1.ParamByName('Pr1').Value := EsVacio(Edit1.Text);
  SqlQuery1.ExecSQL();

Gracias por su tiempo y espero que esto le pueda servir para alguien.


La franja horaria es GMT +2. Ahora son las 06:27:29.

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