[firebase-br] [off] - Auto incremento via Aplicativo
Francisco Thiago
jeandeadlucky em yahoo.com.br
Seg Jun 27 13:02:24 -03 2005
Caros amigos,
Me desculpem pelo off-topic.
Seguinte: Até dois meses atrás eu tinha uma procedure que funcionava
perfeitamente (segue código abaixo)... No entanto, semana passada, ela
deixou de funcionar como o esperado. Ela executa normalmente, incrementa o
generator e tudo.. só que não aplica o valor corretamente.
Ela está sendo chamada no evento OnBeforeUpdateRecord
Se alguém puder apontar o meu erro, ficarei agradecido.
Francisco Thiago de Almeida
Enter&Plug Sistemas
Divisão: Desenvolvimento / Banco de dados
Franca - SP
Procedure
procedure TDmCadastro.UpdateRecordAutoInc(Sender: TObject;
SourceDS: TDataSet; var DeltaDS: TCustomClientDataSet;
UpdateKind: TUpdateKind; var Applied: Boolean; FieldIndex: Integer);
var
li_MaxGenerator: Integer;
li_Id: Integer;
begin
//Captura o valor máximo permitido a um
sqlMax_Generator_Value.Open;
li_MaxGenerator := sqlMax_Generator_ValueRDBMAX_GENERATOR_VALUE.AsInteger;
sqlMax_Generator_Value.Close;
if UpdateKind in [ukInsert,ukModify] then
begin
if UpdateKind = ukInsert then
begin
try
if pfInKey in DeltaDS.Fields[FieldIndex].ProviderFlags then
begin
li_Id := getId('gen_'+ DeltaDS.Fields[FieldIndex].DisplayName);
// Se estourar o range de Generator
if li_MaxGenerator < li_Id then
raise Exception.Create('Server Error'+ #$D#$A +'Numero de
registros permitidos ultrapassados')
else
begin
DeltaDS.Fields[FieldIndex].NewValue := li_Id;
end;
end;
except
on E :Exception do
begin
DeltaDS.Fields[FieldIndex].NewValue := ci_AutoInc;
raise;
end;
end;
end;
end;
end;
_______________________________________________________
Yahoo! Acesso Grátis - Internet rápida e grátis.
Instale o discador agora! http://br.acesso.yahoo.com/
Mais detalhes sobre a lista de discussão lista