Fórum Ajuda Com Banco de Dados #174643
12/08/2003
0
Olá pessoal,
Estou usando o Interbase, criei uma tabela com uma trigger que quando o usuário inserir o registro a trigger criar um código para este. Mas só consigo ver este código do registro quando fecho e abro a tabela novamente.
Já dei um post e logo depois um CommitRetaining. Estou precisando deste código para gravar em uma tabela filha.
Se aguém puder me ajudar ficarei grato.
Pomarolli
Estou usando o Interbase, criei uma tabela com uma trigger que quando o usuário inserir o registro a trigger criar um código para este. Mas só consigo ver este código do registro quando fecho e abro a tabela novamente.
Já dei um post e logo depois um CommitRetaining. Estou precisando deste código para gravar em uma tabela filha.
Se aguém puder me ajudar ficarei grato.
Pomarolli
Pomarolli
Curtir tópico
+ 0
Responder
Posts
12/08/2003
Joilson_gouveia
Se vc está no começo do sistema, minha sugestão é que vc mesmo construa sua função de retornar o último registro + 1 de sua tabela, pois terá mais controle sobre o registro criado. Autoincremento só é vantajoso nas tabelas PRIMÁRIAS, que não terão tabelas dependentes...
function RetornaCodigo:Integer;
var
qry:TQuery;
begin
qry := TQuery.Create(self);
with qry do
begin
DataBaseName := (seu data base name);
SQL.Text := ´SELECT MAX(CODCLI) AS CODCLI FROM TB_CLI´;
Open;
if FieldByName(´CODCLI´).IsNull then
Result := 1 // Primeiro registro
else
Result := FieldByName(´CODCLI´).AsInteger + 1;
Close;
Free;
end;
end;
function RetornaCodigo:Integer;
var
qry:TQuery;
begin
qry := TQuery.Create(self);
with qry do
begin
DataBaseName := (seu data base name);
SQL.Text := ´SELECT MAX(CODCLI) AS CODCLI FROM TB_CLI´;
Open;
if FieldByName(´CODCLI´).IsNull then
Result := 1 // Primeiro registro
else
Result := FieldByName(´CODCLI´).AsInteger + 1;
Close;
Free;
end;
end;
Responder
Gostei + 0
13/08/2003
Torres Delphi
Acho que o seu problema eh a transacao que nao foi ´comitada´ no banco.
Tente fazer isso:
// No botao incluir/alterar, enfim, no inicio da manutencao do registro
Dm.DataBase1.StartTransaction;
// No botao Gravar/Salvar
Dm.DataBase1.Commit;
De um refresh na query/table do grid, se estiver usando
Abs
Tente fazer isso:
// No botao incluir/alterar, enfim, no inicio da manutencao do registro
Dm.DataBase1.StartTransaction;
// No botao Gravar/Salvar
Dm.DataBase1.Commit;
De um refresh na query/table do grid, se estiver usando
Abs
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)