Ajuda Com Banco de Dados

Delphi

12/08/2003

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


Pomarolli

Pomarolli

Curtidas 0

Respostas

Joilson_gouveia

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;


GOSTEI 0
Torres Delphi

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


GOSTEI 0
POSTAR