Data Inclusão e Alteração no Firebird + Delphi 2010
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.
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
Curtidas 0
Respostas
Eriley Barbosa
14/10/2010
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;
GOSTEI 0
Adilson Rumao
14/10/2010
Ok, vou testar aqui e depois dou um retorno. Muito obrigado.
GOSTEI 0
Adilson Rumao
14/10/2010
Ok Eriley consegui fazer funcionar, muito obrigado pela ajuda.
GOSTEI 0
Adilson Rumao
14/10/2010
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?
GOSTEI 0
Alex Bahiano
14/10/2010
Tive esse problema ontem, só consegui resolver depois que coloquei o campo data como DATE e não Timesestamp, uso o firebird 2.5
GOSTEI 0
Emerson Nascimento
14/10/2010
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.
você pode também utilizar .AsSQLTimeStamp junto com a função DateTimeToSQLTimeStamp(), que está na unit SQLTimSt.
GOSTEI 0
Adilson Rumao
14/10/2010
Consegui resolver assim, não sei se seria o modo mais prático e funcional, mas está funcionando.
E tbm criei um campo Lookup no ClientDataSet.
Só que achei que fica muito carregado o meu DM.
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;
GOSTEI 0
Adilson Rumao
14/10/2010
Olá galera, alguém para dar uma luz?
GOSTEI 0
Adilson Rumao
14/10/2010
Olá galera, alguém para dar uma luz?
Ae galera, um bom Natal atrasado a todos.
Alguém para dar uma dica?
GOSTEI 0
Ricardo Araujo
14/10/2010
vc conseguiu resolver o seu problema ?
GOSTEI 0
Adilson Rumao
14/10/2010
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.
GOSTEI 0