Parameters.ParamByName('违章日期').Value := FormatDateTime('dd-MM-yyyy',DateTimePicker2.Date);
这是在ADOQuery控件中的使用的sql语句,但是一运行就回出这样的错误信息:Project Project1.exe raised exception class EOleException with message
'ORA-1843:无效的月份'...............
而时间的使用却没有提出这样的问题,请问谁能告诉我该怎么办
我还用过to_char,to_date函数,但是编译出错提示为无效的编辑符。我该怎么办?

解决方案 »

  1.   

    Parameters.ParamByName('违章日期').Value := FormatDateTime('YYYY-MM-DD',DateTimePicker2.Date);
      

  2.   

    ljmanage(过客),你的方法我试过了,但还是原来的出错提示,
    我的数据库是oracle9i,它的默认的日期格式是DD—MON-YY,我也试过,还是以上的出错提示,我该怎么改呢。另外我想日期的年是四位,而不是两位,不知该怎么办?
      

  3.   

    e_shark,我也试过这种方法,得到的编译出错信息如下:“Project Project1.exe raised exception class EOleException with message 'ORA-00932:不一致的数据类型:要求DATE得到的却是NUMBER'..............
      

  4.   

    我现在正好也碰到这样的问题,编程环境与数据库中的日期类型不匹配,思前想后决定绕开它,我将数据库表中的所有日期类型的字段全部改成字符类型,约定其格式为“yyyymmdd”,在往数据库表中存入日期时,先将日期类型的数据转换成这种格式的字符串,再以字符串的形式保存入数据库,读出的时候进行一个逆过程。
    这么做的只要原因就是,编程环境与数据库中的日期类型不匹配,我想做到不论用任何数据库,都能执行我的程序,这样就做到了接口一致。
      

  5.   

    感觉你的写法没有错啊!
    试这样行不行?
    Parameters.ParamByName('违章日期').Value := datetostr(DateTimePicker2.Date);
      

  6.   

    lllygang(阿Q),这种写法我些试过了,但是还是原来的错误提示信息。
    我先按照jiangnanyuzi(江南愚子)的方法该了数据库表中的设计,但是又有了如下的运行错误信息:“Project Project1.exe raised exception class EDatabaseError with message 'NewADOQuery1:CommandText does not return a result set'...”
    请教各位这是什么原因引起的呢?我该怎么解决它呢?
      

  7.   

    Parameters.ParamByName('违章日期').asdatetime := DateTimePicker2.Date;
      

  8.   

    :“Project Project1.exe raised exception class EDatabaseError with message 'NewADOQuery1:CommandText does not return a result set'...”是说你没有结果集返回;把你的NewAdoQUery1.Open改为NewAdoQUery1.ExecSQL;
      

  9.   

    older(疲倦的程序员),这里没有asdatetime这个属性,因此无法操作
    另外我在NewAdoQUery1.ExecSQL前加上了NewAdoQUery1.Open这条语句就不能正确执行,一旦去掉就可以,这是为什么,另外我在写sql语句之前已经写过close语句,因此我认为这里应该再执行ExecSQL之前应该在open,有什么不对吗?