[firebase-br] Trigger + ClientDataSet
Fausto
fausto.s.a em uol.com.br
Ter Nov 30 14:14:14 -03 2004
Amigo utilize esta função....
function TForm1.GetNewGen(Gen_Name: string): integer;
var
ResultSet: TCustomSQLDataSet;
SQLstmt: string;
begin
SQLStmt := 'SELECT gen_id(' + Gen_Name + ',1) as valor from
RDB$DATABASE;';
ResultSet := nil;
try
FBConnection.Execute(SQLstmt, nil, @ResultSet);
if Assigned(ResultSet) then begin
Result := ResultSet.FieldByName('valor').AsInteger;
end;
finally
ResultSet.Free;
end;
end;
E chame-a assim no evento AfterInsert do ClientDataSet.
procedure TForm1.CDSAfterInsert(DataSet: TDataSet);
begin
SuaChavePrimaria.asInteger := GetNewGen('Seu_Generator')
end;
Fausto
Esta função foi retirada de um exemplo do Cantu para a revista ClubeDelphi
----- Original Message -----
From: "Leonardo" <leomarcsys em mcnet.inf.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Tuesday, November 30, 2004 1:43 PM
Subject: [firebase-br] Trigger + ClientDataSet
Boa tarde amigos da lista,
Criei a dupla GENERATOR+TRIGGER em minha base de dados sendo que o
trigger é BEFORE INSERT, e no delphi utilizo o time
SQLDATASET+DATASETPROVIDER+CLIENTDATASET.
No formulário de manutenção da tabela uso os DataControls nativos do
delphi 7.
O problema é que quando vou inserir um novo registro ao tentar gravá-lo
(POST + APPLYUPDATES(-1)) eu recebo um erro informando que o campo
chaveprimária não pode conter valor vázio!!!
Andei pesquisando e algumas prováveis soluções que encontrei não
funcionaram!
Uma é a de inserir um valor simbólico na chave primária antes do post,
na dia diz que este valor seria substituído pelo GENERATOR na base de
dados, mas isto não ocorre, ao verificar a inserção o valor da chave
primária é o dito valor simbólico!!!
Como posso resolver tal situação?
Cordialmente,
Leonardo Marcelino Teixeira
Corpo de Bombeiros Militares - Divinópolis/MG
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
--
No virus found in this incoming message.
Checked by AVG Anti-Virus.
Version: 7.0.289 / Virus Database: 265.4.3 - Release Date: 26/11/2004
--
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.289 / Virus Database: 265.4.3 - Release Date: 26/11/2004
Mais detalhes sobre a lista de discussão lista