Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   problema insert edit con con valores NULL (https://www.clubdelphi.com/foros/showthread.php?t=78539)

darkbits 27-04-2012 17:19:28

problema insert edit con con valores NULL
 
un saludo prestigioso foro
estos trabajando en D6 con Inbertabe 6
tengo una tabla "almacen"
id_al (es llave primaria y autoincremente)
cb_al varchar (acepta null)
producto_al varchar( not null)
detalle_al varchar (not null)

tengo 3 dificultades que no puedo dar solucion
1.- cuando inserto no me llega a guardar en la DB me pide que id_al tenga un valor pero yo lo estoy colocando "autoincremento" cuando lo coloco manual si funciona pero mi idea es que se incremente automaticamente
2.- el campo cb_al aveces no coloco valor por eso lo dije que "acepte null" y en la base de datos de interbase me aparece NULL y cuando quiero editar o leer ese valor me da ERROR mi aplicacion me dice campo cb_al es NULL si a ese campo yo le doy un espacio ya n es null y lee y edita bien

necesito que se incremente automaticamente al insertar
y en el campo cb_al como puedo insertar grabar un espacio o solucionar la lectura para edit y me permita trabajar sin salir error de NULL

con esta consulta inserto, pero no inserta porque me pide id_al que es la llave principal y esta en la DB como autoincremento
Código SQL [-]
_DM.tabla1.Insert;
       _DM.tabla1.FieldByName('cb_al').Value:= edit1.text;
       _DM.tabla1.FieldByName('producto_al').Value:= ComboBox1.text;
       _DM.tabla1.FieldByName('detalle_al').Value:= edit2.text;
       _DM.tabla1.UpdateStatus;
       _DM.tabla1.Post;

y con esta edito me da ERROR porque aveces el campo cb_al es vacio o null como dice interbase

Código SQL [-]
  _DM.consulta1.SQL.Text:= 'Select * From almacen Where id_al='+DBedit1.text ;
          _DM.tabla1.Open;
          _DM.tabla1.Edit;
       _DM.tabla1.FieldByName('cb_al').Value:= edit1.text; // cuando el valor es vacio o null me da error
       _DM.tabla1.FieldByName('producto_al').Value:= ComboBox1.text;
       _DM.tabla1.FieldByName('detalle_al').Value:= edit2.text;
       _DM.tabla1.Post;
       _DM.tabla1.Active:= false; // para actualizar la tabla apago
       _DM.tabla1.Close;
       _DM.tabla1.Active:= true; // enciendo para actulizar la tabla

Casimiro Noteví 27-04-2012 17:25:25

¿Cómo tienes creado el "autoincremento"?

darkbits 27-04-2012 17:34:13

lo tengo creada por un triggers
cuando ingreso a la DB e inserto datos manualmente funciona de maravilla incrementa id_al automaticamente
en D6 estoy insertando por tabla y me pide id_al

mis 2 preguntas cuando pruebo manualmente funciona pero cuando inserta Delphi no :(

Casimiro Noteví 27-04-2012 17:38:54

Puedes configurarle en el componente que uses, dependiendo del que sea :)
De todas formas, tienes una opción fácil, dale siempre un valor, por ejemplo, cero.

MartinS 27-04-2012 17:49:02

Hola: Podrias poner aqui el codigo del Trigger?

Saludos

darkbits 27-04-2012 18:02:33

triger
Código SQL [-]
as
begin
  if (new.id_al is null) then
    new.id_al = gen_id(gen_almacen_id,1);
end

Casimiro Noteví 27-04-2012 18:13:34

Seguramente usas IBX, creo recordar que tiene una propiedad "required", cambia a false.

darkbits 27-04-2012 18:50:48

required ?
o la propiedad NOT NULL?

Casimiro Noteví 27-04-2012 18:52:49

Cita:

Empezado por darkbits (Mensaje 431256)
required ?
o la propiedad NOT NULL?

Te hablo de memoria, seguramente es esa propiedad.

darkbits 27-04-2012 19:01:08

si estoy trabajando en IBX
a id_al que es llave principal y tiene el autoincremento lo quite NOT NULL y ahora si funciona inserta sin problema
solo me falta solucionar los campos que no asigno valor se quedan NULL
y cuando quiero leer me da error porque dice que es valor nullo

gracias por su ayuda


La franja horaria es GMT +2. Ahora son las 10:39:36.

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