GARANTIR DESCONTO

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


Pomarolli

Pomarolli

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;


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


Responder

Gostei + 0

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

Aceitar