Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Problema con los IBO y Firebird (https://www.clubdelphi.com/foros/showthread.php?t=53777)

Ubed 29-02-2008 09:44:10

Problema con los IBO y Firebird
 
Hola tengo una aplicacion con esta funcion para generar los autoincrementos, pero he tenido que cambiar los ib_Dataset por dataset normales.

Bien mi problema es que como debo hacer esta funcion ahora?

Código Delphi [-]
if (IB_Dataset.State=dssInsert) AND (IB_Dataset.FieldByName('ID_MONITOR').IsNull) then
    IB_Dataset.FieldByName('ID_MONITOR').AsInteger:=IB_Dataset.Gen_ID('GEN_ID_MONITOR',1);
end;

Gracias de antemano

Lepe 29-02-2008 12:58:51

Esto suele hacerse del lado servidor, dentro de la base de datos en un trigger before insert:
Código SQL [-]
if new.id_monitor is null then 
  new.id_monitor = Gen_ID('GEN_ID_MONITOR',1);
Ahora al tiempo de insertar, omites el campo id_monitor o directamente en la SQL le pasas el valor NULL (declara la unidad Variants en el uses para que compile).

Para hacerlo del método que tú quieres, tendrías que lanzar otra consulta más para generar el valor:
Código Delphi [-]
query1.sql.text := 'select Gen_ID('+ quotedstr('GEN_ID_MONITOR')+',1)';
query1.Open
IB_Dataset.FieldByName('ID_MONITOR').AsInteger:=
query1.Fields[0].AsInteger;
query1.Close;
(dicho de memoria, espero que funcione).

Saludos


La franja horaria es GMT +2. Ahora son las 01:23:51.

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