* Tengo una base de datos (Interbase 6.5) en un Servidor Win 2000
- El Interbase Manager esta corriendo como un servicio En windows
- Tengo una tabla almacenes con 2 campos:
id_alm Integer Autoincrementado (LLAVE PRIMARIA)
descripcion Character
por lo tanto tengo un generador del id_alm q inicia en o e incrementa en 1
ademas de un Disparador antes de insertar
BEGIN
IF (NEW.ID_ALM IS NULL) THEN
NEW.ID_ALM = GEN_ID(GEN_ALM_ID,1);
END
Los cuales estoy seguro q funcionan por que inserto datos desde el InterBase Expert
y al insertar registros pone automaticamente el ID incrementando en el generador
PERO CON DELPHI 7 NO LO HACE, TENGO LO SIGUIENTE
* Utizo DBExpress
- 1 SQLConnection1 (con mis respectivos parametros de coneccion)
- 1 SimpleDataSet1
connection := SQLConnection1
commandtype:= ctTable
commandtext:= almacenes
- 1 DataSourse1
DataSet := SimpleDataSet1
Tengo una forma donde use un Grid, un boton de Agregar y un boton de Guardar
- 1 DbGrid1
DataSource:= DataSourse1
Al oprimir el Boton de Agregar
SimpleDataSet1.Insert;
se genera el nuevo registro con los campos en blanco
NO CAPTURO NADA en id_alm y tecleo datos par adescripcion
Al oprimir el boton de Guardar
SimpleDataSet1.Post;
SimpleDataSet1.ApplyUpdates(-1);
Y ENTONCES ME DA EL SIGUIENTE ERROR
"Field 'id_alm'must have a value'
Y esto para mi es que no se ejecuta el disparador, en cambio si manualmente le doy un
valor al campo id_alm entonces lo acepta y guarda el registro sin problema.
OTRO DETALLE Q DETECTE ES QUE SI MANUALMETE YO LE DOY VALORES AL ID_ALM
Y REPITO UN VALOR DEL ID_ALMA CUANDO LO REPITO Y LE DOY GUARDAR
NO ME MANDA NINGUN MESAJE DE ERROR Y APARENTEMENTE LO ACEPTA, PERO
AL REFRESCAR LA TABLA EN REALIDAD NO REGISTRO.
LO CUAL ES CORRECTO POR QUE ES UNA RESTRICCION, POR SER UN CAMPO LLAVE.
!!!!!Por favor Alguien me podria decir que tengo q hacer para que funcione
el disparador y el valor del campo se genere automaticamente con
el generador que esta en Base de Datos.
CON DELPHI 7
GRACIAS
Atte: Norber
norberto_larios@hotmail.com