Que erro é esse?

Delphi

16/10/2007

Que tipo de erro é esse?

ORA-01840: valor de entrada não é longo o suficiente para formato de data.


Tipo assim:
Cds.Close;
Cds.CommandText := ´select campo1,campodata from tabela where campo1 = :parametro1 and campodata =:parametro2´

Parametro2 é string e campodata Date. O erro é no campodata(Parametro2).


Paulo

Paulo

Curtidas 0

Respostas

Massuda

Massuda

16/10/2007

Qual o valor de parametro1 e parametro2 quando falha?


GOSTEI 0
Paulo

Paulo

16/10/2007

No caso acima foi apenas um exemplo hipotético, mas o erro acontece assim:

select campodata from tabela
where campodata =:dt1

cds.params[0].asstring := FUNCAOCONVERTEDATA(StrToDate(variavel));

O valor da variavel é: [color=red:20610057c3]´15/02/2007´[/color:20610057c3]

Essa função converte a data para uma string já no formato do banco.


GOSTEI 0
Marco Salles

Marco Salles

16/10/2007

cds.params[0].asstring := FUNCAOCONVERTEDATA(StrToDate(variavel)); O valor da variavel é: ´15/02/2007´ Essa função converte a data para uma string já no formato do banco.


hummmm , pq não simplesmente : :?: :?:

cds.params[0].asstring := variavel; 



GOSTEI 0
Paulo

Paulo

16/10/2007

Poruqe a funcao convertedata, já coloca a data no formato do banco como eu falei anteriormente.


GOSTEI 0
Fknyght

Fknyght

16/10/2007

Tenta fazer deste jeito

cds.params[0].ASDATE := StrToDate(variavel);

Dessa forma, não importa como o banco trata a data ela e automaticamente convertida


GOSTEI 0
Paulo

Paulo

16/10/2007

Acabei de descobrir o problema. Meu chefe ele trabalha de uma forma diferente da minha, ex: Eu costumo colocar o nome dos parâmetros identicos aos campos e ele acha assim confuso e prefere colocar P1,P2 e etc... Acontece que sem ele falar comigo, ele inverteu a ordem de um parametro. Como aconteceu? Na minha máquina estava ok, mas quando eu mandei para ele as minhas alterações, ele pega então e compila tudo no servidor. Ele então modificou e rodou. Deu o erro e passou pra mim sem me dizer o que havia feito. Vi o erro, tentei resolver na máquina dele. Como ele me disse que não havia alterado nada, me concentrei na procedure onde aparecia o erro, mas sem olhar para uma outra em outra unit onde a query era montada, achando que o problema poderia estar no banco. Aprendi uma coisa: [color=red:e2c21258f5]Nuna acredite em seu chefe quando ele diz que não mexeu em nada.[/color:e2c21258f5]


GOSTEI 0
POSTAR