PDA

Ver la Versión Completa : problema insert edit con con valores NULL


darkbits
27-04-2012, 17:19:28
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
_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

_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 Notevi
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 Notevi
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
as
begin
if (new.id_al is null) then
new.id_al = gen_id(gen_almacen_id,1);
end

Casimiro Notevi
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 Notevi
27-04-2012, 18:52:49
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