Ajuda Com Banco de Dados
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
Curtidas 0
Respostas
Joilson_gouveia
12/08/2003
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;
GOSTEI 0
Torres Delphi
12/08/2003
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
GOSTEI 0