Fórum Data Inclusão e Alteração no Firebird + Delphi 2010 #388430

14/10/2010

0

Boa dia, estou com a seguinte situação:
Tenho em cada tabela os seguintes campos.

DTINC_CLI = TIMESTAMP (Data de Inclusão)
DTALT_CLI = TIMESTAMP (Data de Alteração)
CODFUN_CLI = INTEGER (Usuário que incluiu ou alterou o registro)

Mas não estou conseguindo gravar isso no banco de dados. Alguém poderia dar uma dica? Desde já obrigado pela atenção.

Adilson Rumao

Adilson Rumao

Responder

Posts

14/10/2010

Eriley Barbosa

No evento beforepost de suas tabelas, coloque o seguinte código: if suaquery.state = dsInsert then begin   suaquery.fieldbyname('DTINC_CLI').value  := Now;   suaquery.fieldbyname('DTALT_CLI').value  := Now;  {Quando o usuario logar no seu sistema grave o código dele numa variavel global no formulario principal ou datamodule ou unit de funções e inclua a unit que tem a variavel no uses de cada formulario}   suaquery.fieldbyname('CODFUN_CLI).value  := Codigousuariologadonosistema; end else   if suaquery.state = dsEdit then   begin      suaquery.fieldbyname('DTALT_CLI').value  := Now;     {Quando o usuario logar no seu sistema grave o código dele numa variavel global no formulario principal ou   datamodule ou unit de funções e inclua a unit que tem a variavel no uses de cada formulario}   suaquery.fieldbyname('CODFUN_CLI).value  := Codigousuariologadonosistema;    end;
Responder

Gostei + 0

14/10/2010

Adilson Rumao

Ok, vou testar aqui e depois dou um retorno. Muito obrigado.
Responder

Gostei + 0

15/10/2010

Adilson Rumao

Ok Eriley consegui fazer funcionar, muito obrigado pela ajuda.
Responder

Gostei + 0

09/12/2010

Adilson Rumao

Oi bom dia, como disse antes consegui fazer funcionar mas só em partes. Não consegui gravar o Nome do Funcionário que está incluindo ou alterando. Só gravou o código dele. Será que colocando um DBLookupComboBox daria certo?
Responder

Gostei + 0

09/12/2010

Alex Bahiano

Tive esse problema ontem, só consegui resolver depois que coloquei o campo data como DATE e não Timesestamp, uso o firebird 2.5
Responder

Gostei + 0

09/12/2010

Emerson Nascimento

o campo pode ficar como TimeStamp, desde que você use .Value.
você pode também utilizar .AsSQLTimeStamp junto com a função DateTimeToSQLTimeStamp(), que está na unit SQLTimSt.
Responder

Gostei + 0

15/12/2010

Adilson Rumao

Consegui resolver assim, não sei se seria o modo mais prático e funcional, mas está funcionando.  
procedure TDM.cdsPaisesBeforePost(DataSet: TDataSet);
begin
  if cdsPaises.State = dsInsert then
  begin
    cdsPaises.FieldByName('DATAINC').Value := Now;
    cdsPaises.FieldByName('DATAALT').Value := Now;
    cdsPaises.FieldByName('RESPONSAVEL').Value := TUsuario.GetInstance.Codigo;
  end
  else
  if cdsPaises.State = dsEdit then
  begin
    cdsPaises.FieldByName('DATAALT').Value := Now;
    cdsPaises.FieldByName('RESPONSAVEL').Value := TUsuario.GetInstance.Codigo; {aqui vem da minha classe usuário}
  end;
end;
  E tbm criei um campo Lookup no ClientDataSet.   Só que achei que fica muito carregado o meu DM.    
Responder

Gostei + 0

23/12/2010

Adilson Rumao

Olá galera, alguém para dar uma luz?
Responder

Gostei + 0

27/12/2010

Adilson Rumao

Olá galera, alguém para dar uma luz?
Ae galera, um bom Natal atrasado a todos.   Alguém para dar uma dica?
Responder

Gostei + 0

29/12/2010

Ricardo Araujo

vc conseguiu resolver o seu problema ?

Responder

Gostei + 0

30/12/2010

Adilson Rumao

Então, do jeito que está hoje funciona. Mas gostaria de saber se tem alguma forma de melhorar o código. Visto que, o DM fica muito carregado (ao meu ver claro).   Desde já obrigado pela atenção.
Responder

Gostei + 0

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

Aceitar