GARANTIR DESCONTO

Fórum Erro no Incremento #41103

21/12/2003

0

Estou tentando usar a função postada aqui pelo Nobre A. Farias, mas não estou conseguindo.

A função fica no datamodule.
function TDMFolha.GetNewID(const AGenerator: string; Tabela:TIBDataSet): Integer;
const SQLText = ´select gen_id(¬s, 1) from rdb$database´;
begin
Result:=0;
with Tabela do
begin
SelectSQL.CommaText :=Format(SQLText, [AGenerator]);
Transaction.StartTransaction;
try
ExecSQL;
Result := Fields[0].AsInteger;
finally
Transaction.Commit;
end;
end;
end;

Evento OnNewRecord:
IBEmpresa.FieldByName(´CODIGO´).AsInteger := GetNewID(´GEN_EMPRESA_ID´,IBEmpresa);

Só que ela me retorna alguns erros, primeiro me diz q a transação já está ativa, e depois me dá erro de violação de endereço na memoria, eu acho.

Estou usando:

1 - TIBDatabase (Ativado ao abrir o programa...)
2 - TIBTransaction (Ativado ao abrir o programa...)
3 - TIBDataSet (Ativado ao clicar em Incluir...)
4 - TDataSource (Ligado ao TIBDataSet...)

O que estou fazendo de errado, e como posso corrigir meus erros, tornando meu programa consistente e seguro para o cliente?.

As sugestões e dicas serão bem vindas.


Martins

Martins

Responder

Posts

21/12/2003

Martins

Desculpem!!

Esqueci de mencionar que usando o GeneratorField do IBDataset (on NewRecord) ele fica beleza, o (on server) só pode ser visto pelo servidor?
E seu eu estiver usando o programa de forma multi-usuário isso não pode causar uma violação na chave primária?

Conto com vcs para me ajudarem.


Responder

Gostei + 0

22/12/2003

Afarias

Leia completamente o tópico abaixo::

http://delphiforum.icft.com.br/forum/viewtopic.php?t=30060


se ainda assim restar alguma dúvida, vc nos traz ok?!


T+


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar