Convertendo data, Erro de Todas as Formas
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?!
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
Curtidas 0
Respostas
Deus
03/12/2003
Bem, confesso que vi duas coisas que podem ser problema.
1o: Você falou que tentou converter com
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:
2o.: Você usou, no final da expressao, o seguinte:
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:
ou então
Verifique se não é isso.
Espero ter ajudado. Abraços, dEUS.
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.
GOSTEI 0