[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