PDA

Ver la Versión Completa : Ingresar un registro en BD con ID autonumerico


strelok
05-10-2017, 10:08:14
Hola, tengo un DataModule, y dentro tengo un DataSet.

Aprendí hace poco a hacer las altas así :

MiDataModule.MiDataSetCAMPO.AsTipo := valor;

Ejemplo:

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?

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

Casimiro Notevi
05-10-2017, 10: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, 13:15:13
Elimina la línea donde le asignas el valor.

Griselda Diaz
05-10-2017, 23: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, 09: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, 15: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, 15: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, 17: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, 19:03:25
Hola.

How to create an autoincremental column ? (http://www.firebirdfaq.org/faq29/) ( The Firebird FAQ (http://www.firebirdfaq.org/) )

Saludos :)

ElDioni
09-10-2017, 13:03:19
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, 13:06:28
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, 15:07:07
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.