Fórum Auto incremento no Firebird, mas no código. #217532
01/03/2004
0
:?: :?: Gostaria de saber como crio um campo autoincremento, no firebird. O problema é que aqui no trabalho o dono solicitou gerar-se uma unit só para gerenciar o autoincremento, inclusive criá-lo a partir de qualquer campo integer (aí é que está meu problema).
Emir Neto
Curtir tópico
+ 0
Responder
Posts
01/03/2004
Borbatech
Primeiro eu criei uma Procedure no Banco, ex
´´CREATE PROCEDURE SP_ESTOQUE RETURNS ( COD INTEGER)
AS
BEGIN
COD = GEN_ID(GEN_ESTOQUE,1);
SUSPEND;
END
´´
depois coloque um componete IBStoredProc na sua Unit e direcione para SP_ESTOQUE
para pegar o valor e o seguinte:
DM.QryESTOQUE.Append;
DM.IBTransaction1.StartTransaction; // Inicia transação
// Prepara para executar a Stored Procedure
if not SP_ESTOQUE.Prepared then
SP_ESTOQUE.Prepare;
// Executa
SP_ESTOQUE.ExecProc;
// Pega o valor do Generator
DM.QryESTOQUEPR_COD.Value := SP_ESTOQUE.ParamByName(´COD´).vALUE ;
LabelGen.Caption := IntToStr(IBStoredProc1.ParamByName(´VALOR_GENERATOR´).AsInteger);
DM.IBTransaction1.Commit; // Commit da transação
Valeu ..
´´CREATE PROCEDURE SP_ESTOQUE RETURNS ( COD INTEGER)
AS
BEGIN
COD = GEN_ID(GEN_ESTOQUE,1);
SUSPEND;
END
´´
depois coloque um componete IBStoredProc na sua Unit e direcione para SP_ESTOQUE
para pegar o valor e o seguinte:
DM.QryESTOQUE.Append;
DM.IBTransaction1.StartTransaction; // Inicia transação
// Prepara para executar a Stored Procedure
if not SP_ESTOQUE.Prepared then
SP_ESTOQUE.Prepare;
// Executa
SP_ESTOQUE.ExecProc;
// Pega o valor do Generator
DM.QryESTOQUEPR_COD.Value := SP_ESTOQUE.ParamByName(´COD´).vALUE ;
LabelGen.Caption := IntToStr(IBStoredProc1.ParamByName(´VALOR_GENERATOR´).AsInteger);
DM.IBTransaction1.Commit; // Commit da transação
Valeu ..
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)