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)
-   -   Ingresar un registro en BD con ID autonumerico (https://www.clubdelphi.com/foros/showthread.php?t=92348)

strelok 05-10-2017 11:08:14

Ingresar un registro en BD con ID autonumerico
 
Hola, tengo un DataModule, y dentro tengo un DataSet.

Aprendí hace poco a hacer las altas así :

Código:

MiDataModule.MiDataSetCAMPO.AsTipo := valor;
Ejemplo:

Código:

dmPrincipal.DataSet1.NOMBRE.AsString := 'STRELOK';
El problema es que mi campo "ID" es autonumerico, le doy valor explota, si le doy nil explota y si no le doy nada explota, como hago?

Código:

dmPrincipal.DataSet1.ID := nil; //intento 1
dmPrincipal.DataSet1.ID.AsInteger := 0; // intento 2


Casimiro Notevi 05-10-2017 11:49:08

Si es autonumérico en la BD (que no has dicho cuál es), entonces no tienes que hacer nada.

Y "explota" no es un error que podamos identificar.

Neftali [Germán.Estévez] 05-10-2017 14:15:13

Elimina la línea donde le asignas el valor.

Griselda Diaz 06-10-2017 00:57:22

No es necesario llenar el campo Id en el codigo, porque la misma base de datos lo hace, ya que es autonumerico.

strelok 06-10-2017 10:37:20

Me faltaba crear el trigger, normalmente MYSQL lo hace solo, nunca tuve que crear un trigger para tal fin, ahora uso firebird..

ElDioni 06-10-2017 16:43:01

No entiendo lo del trigger, ¿para que es?, si es para rellenar el autonumérico es un error porque, como te han dicho, este valor se rellena solo en la base de datos sin asignarle nada.

Saludos.

Griselda Diaz 06-10-2017 16:46:27

No he usado firebird, pense que seria tan sensillo como en mysql y sqlserver, encontre esta liga que es similar a lo que necesitas.
http://www.clubdelphi.com/foros/showthread.php?t=19876


No tengo permiso de poner enlaces por eso separe la url

Casimiro Notevi 06-10-2017 18:57:49

En firebird no existen los campos "autonuméricos" como tal, sino que se crea un "generador", que hace las veces de un autonumérico.
Y luego para que se inserte automáticamente en la tabla correspondiente se crea un trigger before insert, que lee el generador, inserta el valor y aumenta el generador.

Antes he puesto un ejemplo.

ecfisa 06-10-2017 20:03:25

Hola.

How to create an autoincremental column ? ( The Firebird FAQ )

Saludos :)

ElDioni 09-10-2017 14:03:19

Cita:

Empezado por Casimiro Notevi (Mensaje 521609)
En firebird no existen los campos "autonuméricos" como tal, sino que se crea un "generador", que hace las veces de un autonumérico.
Y luego para que se inserte automáticamente en la tabla correspondiente se crea un trigger before insert, que lee el generador, inserta el valor y aumenta el generador.

Antes he puesto un ejemplo.

Si eso es así, casi prefiero crear una variable "código" e ir incrementándolo yo mismo.

Saludos.

Casimiro Notevi 09-10-2017 14:06:28

Cita:

Empezado por ElDioni (Mensaje 521641)
Si eso es así, casi prefiero crear una variable "código" e ir incrementándolo yo mismo.
Saludos.

En entornos multiusuario puede traerte problemas. Sin embargo un generador lo controla la propia base de datos y se acabó el problema.

ElDioni 09-10-2017 16:07:07

Cita:

Empezado por Casimiro Notevi (Mensaje 521642)
En entornos multiusuario puede traerte problemas. Sin embargo un generador lo controla la propia base de datos y se acabó el problema.

^\||/

me retracto.

Saludos.


La franja horaria es GMT +2. Ahora son las 10:35:05.

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