Problema com atualização usando DbExpress

17/08/2004

2

Caros colegas;
Quando tento atualizar um campo do tipo DateTime usando uma instrução sql com o DbExpress ocorre o seguinte erro: ´Dbx Error: Invalid Field Type.´, ou seja, informando que o tipo de campo é inválido. Alguem pode me dizer pq?

Código Utilizado:

With Qry do begin
Close;
Sql.Clear;
Sql.Add(´UPDATE TABELA SET PT_ACESS = :P00, PT_SITUACAO = :P01´+
´ WHERE CODIGO = :P02´);
Params[00].AsDateTime := Date + Time;
// OU Params[00].AsDateTime := Now;
Params[01].AsString := ´ACESSADA´;
Params[02].AsString := CdPadrao.FieldByName(´CODIGO´).AsString;
ExecSql;
end;


Responder

Posts

17/08/2004

Vinicius2k

Colega,

O Campo na tabela é do tipo TimeStamp, correto?
Bem, com dbExpress campos do tipo TimeStamp não são tratatos como TDateTime e sim TSQLTimeStamp (detalhes sobre este tipo record no help do Delphi)...
A forma mais simples de fazer o que vc precisa é determinar o tipo de dado do parametro e em seguida atribuir à propriedade value, que é do tipo Variant, o retorno da função Now...

with qry do 
  begin 
    Close; 
    Sql.Clear; 
    Sql.Add(´UPDATE TABELA SET PT_ACESS = :P00, PT_SITUACAO = :P01´+ 
           ´ WHERE CODIGO = :P02´); 
    {*****}
    Params[00].DataType:= ftTimeStamp;
    Params[00].Value:= Now;
    {*****}
    Params[01].AsString := ´ACESSADA´; 
    Params[02].AsString := CdPadrao.FieldByName(´CODIGO´).AsString; 
    ExecSql; 
  end;


Espero ter ajudado...
T+


Responder

17/08/2004

Rômulo Barros

With Qry do begin 
Close; 
Sql.Clear; 
Sql.Add(´UPDATE TABELA SET PT_ACESS = :P00, PT_SITUACAO = :P01´+ 
´ WHERE CODIGO = :P02´); 
Params.ParamByName(P00).AsDateTime := Date + Time; 
// OU Params[00].AsDateTime := Now; 
Params.ParamByName(P01).AsString := ´ACESSADA´; 
Params.ParamByName(P02).AsString := CdPadrao.FieldByName(´CODIGO´).AsString; 
ExecSql; 
end;
:P :P :P


Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar