Caros

Estou começando a migrar sistemas do PARADOX para FB/IB e considerei que a
melhor forma era usar uma Trigger, só que eu não consigo ler o valor dado
ao Campo sem dar um refresh nos dados...estou usando um DBNavigator e
DBEdits para testar...(e eu ainda não consegui somar 1+1 aqui :(((  )

Tirei o trigger e coloquei uma solução que achei no Forum do Clube
Delphi que dá erro (ACCESS VIOLATION) (tirei a Trigger).

type
  TSuperVetDataMod = class(TDataModule)
    SQLConnection1: TSQLConnection;
    ClientesSQL: TSQLQuery;
...
    procedure ClientesCDSReconcileError(DataSet:
TCustomClientDataSet;
      E: EReconcileError; UpdateKind: TUpdateKind;
      var Action: TReconcileAction);
    procedure ClientesCDSNewRecord(DataSet: TDataSet);
  private
    { Private declarations }
  public
    { Public declarations }
    Function AutoInc(gen:String):Integer;
  end;

var
  SuperVetDataMod: TSuperVetDataMod;

implementation

{$R *.dfm}

procedure TSuperVetDataMod.ClientesCDSReconcileError(
  DataSet: TCustomClientDataSet; E: EReconcileError;
  UpdateKind: TUpdateKind; var Action: TReconcileAction);
begin
   MessageDlg('Erro ao gravar dados'+E.Message,mtError,[mbOk],0);
end;

function TSuperVetDataMod.AutoInc(gen: String): Integer;
Var
  ResultSet : TCustomSQLDataSet;
  SQLstmt : string;
begin
  result := 0;
  SQLstmt := 'select gen_id('+gen+',1) ' +
  'as VALOR from RDB$DATABASE;';
  ResultSet := nil;
  try
    SQLConnection1.Execute(SQLstmt, nil, @ResultSet);
    if Assigned(ResultSet) then
      Result := ResultSet.FieldByName('VALOR').AsInteger;
  finally
    ResultSet.Free;
  end;
end;


procedure TSuperVetDataMod.ClientesCDSNewRecord(DataSet: TDataSet);
begin
   ClientesSQLCODCLI.AsInteger := AutoInc('GEN_CLIENTES_ID');
end;

Alguém tem alguma dica prática para trabalhar com campos auto-
incremento no D6/7 FB+DBExpress com ClientDataSet...



Atenciosamente

Oswaldo dos Santos Araujo
http://www.santosaraujo.com.br
mailto:[EMAIL PROTECTED]

Telefones escritório: (11) 6996-1101/6994-3586
celular: (11) 9259-4094




-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 



Responder a