Código
Auto-incremento é normalmente utilizado em campos que correspondem a chaves primárias nas tabelas.
Vamos criar dois generator dentro de um banco de dados:
CREATE GENERATOR GEN_CLIENTE_ID;
CREATE GENERATOR GEN_CONTA_ID;
Agora precisamos criar um procedimento, dentro do banco, de dados para incrementar os generators.
SET TERM ^ ;
CREATE PROCEDURE GER_AUTOINC (TABELA VARCHAR(30))
RETURNS ( NOVO_CODIGO INTEGER)
AS
BEGIN
IF (:TABELA = 'CLIENTES') THEN
NOVO_CODIGO = GEN_ID(GEN_CLIENTE_ID,1);
IF (:TABELA = 'CONTAS') THEN
NOVO_CODIGO = GEN_ID(GEN_CONTA_ID,1);
END^
SET TERM ; ^
Procedimento na aplicação, para retornar o valor do generator incrementado :
1. faça a conexão com o banco de dados, usando os componentes disponíveis na paleta InterBase
2. coloque um IBStoredProc no formulário
3. no IBDataSet da tabela, crie um evento BeforePost (antes de gravar) e digite o código abaixo, que tem como função através do componente IBStoredProc, passar os parâmetros database, nome do procedure criado dentro do banco de dados e o nome da tabela.
procedure TForm1.IBDataSet1BeforePost(DataSet: TDataSet);
begin
if IBDataSet1.State = DsInsert then
begin
IBStoredProc1.Database := IBDatabase1;
IBStoredProc1.StoredProcName := 'GER_AUTOINC';
IBStoredProc1.ParamByName('TABELA').AsString := 'CLIENTES';
IBStoredProc1.Prepare;
try
IBStoredProc1.ExecProc;
IBDataSet1CODIGO.AsInteger := IBStoredProc1.ParamByName('Novo_Codigo').AsInteger;
finally
IBStoredProc1.UnPrepare;
end;
end;
end;
Ao gravar um novo registro (comando Post), o generator correspondente, será incrementado e retornado ao campo chave da tabela passada pelo parâmetro.
Por : Paulo Maitan - pmaitan@ig.com.br
Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009