Gracias por el comentario pero eso, no funciona para esta situacion: 2 usuarios A y B hacen una peticion a la misma tabla en ese orden primero A y despues B, luego el usuario B confirma pero el usuario A cancela. Con ese metodo se genereria un salto en la data es decir 1,2,3,....5,. La isea es que el numero se genere en el ultimo momento despues de haber confirmado la transacción. Bueno para el ejemplo genere 1 tabla, un Generador y coloque 4 componentes en la form; database, transaction, query, datasource para conexion con los componentes visuales.
CREATE TABLE EJEMPLO (
ID SMALLINT,
NOMBRE VARCHAR(25) NOT NULL,
PESO NUMERIC(6,2),
FOTO BLOB SUB TYPE SEGMENT SIZE 80
);
CREATE GENERATOR MAESTRO;
SET GENERATOR MAESTRO TO 0;
En el evento afterpost del dataset coloque
procedure Tform1.miDatasetAfterPost(Dataset: Tdataset);
If not midataset.FielByName('ID').Asboolean then begin
QueryId.Sql.clear;
QueryId.Sql.Add('UPDATE TABLA SET ID = GEN_ID(MAESTRO,1) '+);
QueryId.Sql.Add('WHERE ID IS NULL');
QueryId.ExecQuery;
end;
MidataSet.Transaction.CommitRetaining;
end;
Puede existir una mejor forma pero esta funciono para mi
Saludos
Gracias a todos
