Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   campo autonumerico en interbase (https://www.clubdelphi.com/foros/showthread.php?t=19028)

pharaonhx 02-03-2005 16:29:49

campo autonumerico en interbase
 
bueno me explicare lo mejor que puedo haber si alguien me ilumina con este lio

tengo la siguiente tabla en interbase

esta es de ejemplo

CREATE TABLE "PERSONAS"
(
"CLAVEPERSONAS" INTEGER NOT NULL,
"NOMBRE" VARCHAR(40),
"APELLIDO" VARCHAR(40),
"TELEFONO" VARCHAR(10),
"EMAIL" VARCHAR(50),
CONSTRAINT "PK_PERSONAS" PRIMARY KEY ("CLAVEPERSONAS")
);

y tengo un campo llave y no puede estar vacio


en la aplicacion tengo un ibdataset y todos los demas componentes y un navegador para insertar y eliminar los registros


en la base de datos tengo un triggers y un generador

AS
BEGIN
IF (NEW.CLAVEPERSONAS IS NULL) THEN
NEW.CLAVEPERSONAS = GEN_ID(GEN_PERSONAS,1);
END

CREATE GENERATOR GEN_PERSONAS;


el problema es que cuando inserto el registro el campo claveperssonas no se llena ni se incrementa en tonces no puedo guardar el registro porque el campo no puede estar basio y no se que esta mal si alguien puede ayudarme con esto y darme un ejemplo para salir de este lio gracias

repo 02-03-2005 17:15:56

Deberas asignar en el evento OnNewRecord del DataSet un valor 0 al campo PK, y modificar tu trigger:

AS
BEGIN
IF ((NEW.CLAVEPERSONAS IS NULL)OR(NEW.CLAVEPERSONAS=0)) THEN
NEW.CLAVEPERSONAS = GEN_ID(GEN_PERSONAS,1);
END

el problema es que el valor que le asignara el trigger atraves del generador tu aplicacion no sabra cual es, hasta que no refresques la transaccion.

Saludos

repo

pharaonhx 02-03-2005 18:11:12

autonumerico en interbase
 
bueno probe lo que me digeron pero y funciona se incrementa pero ahora no puedo editar los otros campos de la tabla y me da un error cuando trato de editar en ella me dise que el dataset no esta en modo de insercion.

Aztaroth 02-03-2005 18:58:10

Campo Autonumerico
 
Yo utilizo lo siguiente

1.- ya cuando creas la sentencia sql le dices que no se actualize en el ibdataset

2.- agregas los campos al ibdataset y seleccionas la llave primaria, ahora en la propiedad Required le pones a false, y en la propiedad AutogenerateVale le pones arAutoInc, y en ProviderFlags.pfInkey le pones true

asi cuando insertes un registro a la tabla no te dara ningun problema.

Bueno esa es mi sugerencia no se, si hay alguna otra.

pharaonhx 02-03-2005 19:25:51

campo autonumerico interbase
 
beuno gracias a todos por su ayuda siempre me sacan de estos lios
uni todas las soluciones y se resolvio el problema gracias
ok...


La franja horaria es GMT +2. Ahora son las 06:54:53.

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