GARANTIR DESCONTO

Fórum Convertendo data, Erro de Todas as Formas #198556

03/12/2003

0

Cansei!

Estou tentando fazer um update em uma query assim:

AtuProduto := ´UPDATE TBPRODUTO SET PRQUANTIDADE = PRQUANTIDADE + ´+ IBDataSet1.FieldByName(´INFQUANTIDADE´).AsString +
´, PRUTLDATA = ´´´ + FrmNotaFiscal.IBDataSet1NFDATAEMISSAO.AsString +
´´´, PRULTPRECO = ´+ IBDataSet1.FieldByName(´INFVRUNITARIO´).AsString +
´ WHERE ID = ´+ IBDataSet1.FieldByName(´INFPRODUTO_ID´).AsString +´;´;

ShowMessage(AtuProduto);
DM.IBQProduto.Close;
DM.IBQProduto.SQL.Clear;
DM.IBQProduto.SQL.Add(AtuProduto);
DM.IBQProduto.ExecSQL;

Mas sempre ocorre um erro na data.
Coloquei o show mensage para ver se estava aparecendo mesmo a data, e está ok.

Já tentei converter a data assim:
FormatDate(´dd,mm,yy´, FrmNotaFiscal.IBDataSet1NFDATAEMISSAO.AsDateTime);

Mas também dá erro...
Se eu deixar como na primeira opção, ele salva a data no formato ´mm,dd,yy´, logo, se a data for 28/11/03, ficará 11/28/03, o que retorna o erro pois não existe a data...
No caso da segunda opção, aparece a ´Exception´ convertendo a data...
Estou trabalhando com Interbase....
Alguem pode me ajudar?!


Rafaelunp

Rafaelunp

Responder

Posts

03/12/2003

Deus

Bem, confesso que vi duas coisas que podem ser problema.

1o: Você falou que tentou converter com

FormatDate(´dd,mm,yy´, FrmNotaFiscal.IBDataSet1NFDATAEMISSAO.AsDateTime);


Primeiro, o Interbase trabalha com mm/dd/yyyy. Veja se o problema não são os 4 dígitos para o ano, ao invés de 2. Segundo, veja se o uso da barra ao invés da vírgula não solucionaria o problema. 3, pq vc chama como string, ao invés de Date? Ficaria assim:

´, PRUTLDATA = ´ + QuotedStr(FormatDateTime(´mm/dd/yyyy´, FrmNotaFiscal.IBDataSet1NFDATAEMISSAO.AsDateTime))


2o.: Você usou, no final da expressao, o seguinte:

´WHERE ID = ´+ IBDataSet1.FieldByName(´INFPRODUTO_ID´).AsString +´;´; 


Primeiro, ID é um campo string ou inteiro? Se ele é string, está sendo chamado referenciado errado - cadê as aspas? Se ele é inteiro, pq está sendo chamado AsString? Segundo, não há necessidade do ponto e vírgula no final. Poderia ficar da seguinte forma:

´WHERE ID = ´ + QuotedStr(IBDataSet1.FieldByName(´INFPRODUTO_ID´).AsString)


ou então

´WHERE ID = ´ + IBDataSet1.FieldByName(´INFPRODUTO_ID´).AsInteger


Verifique se não é isso.

Espero ter ajudado. Abraços, dEUS.


Responder

Gostei + 0

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

Aceitar