sql server中的存储过程名为total,包含两个参数,@begin_time和@end_time',都是datetime类型
我用ADOStoredProc调用该存储过程
结果delphi运行到ExecProc时报错:
project m.exe raised exception class EOLeException with message '将数据类型varchar转化成datetime时出错。'  请问,为什么会这样啊??我在sql server的查询分析器中exec total @b_time='2004-05-06 07:08:09',@e_time='2004-05-07 07:08:09',是可以正常运行的。ADOStoredProc1.ProcedureName:='total';
ADOStoredProc1.Parameters.ParamByName('@begin_time').value:=strtodatetime(datetostr(DateTimePicker1.Date)+' ' + timetostr(datetimepicker2.Time));
ADOStoredProc1.Parameters.ParamByName('@end_time').value:=strtodatetime(datetostr(datetimepicker3.Date)+' ' + timetostr(datetimepicker4.Time));
ADOStoredProc1.ExecProc ;

解决方案 »

  1.   

    调试:=strtodatetime(datetostr(DateTimePicker1.Date)+' ' + timetostr(datetimepicker2.Time));显示的值了吗,是否有点问题,单步跟踪看看结果
      

  2.   

    恩,,存储过程里面也可以用date()直接取日期时间呀。
      

  3.   

    没有测试过,如果不能传递日期型参数,不妨改为传递字符串型
    FormatDateTime('yyyy-mm-dd hh:nn:ss',YourDateTime)后传入储存过程。
    在储存过程中用Cast转换为日期型变量。
    应该可以解决的。
      

  4.   

    ADOStoredProc1.ProcedureName:='total';
    ADOStoredProc1.Parameters.clear;
    ADOStoredProc1.Parameters.createparam(,,,,);//创建参数
    ADOStoredProc1.Parameters.ParamByName('@begin_time').value:=strtodatetime(datetostr(DateTimePicker1.Date)+' ' + timetostr(datetimepicker2.Time));
    ADOStoredProc1.Parameters.createparam(,,,,);//创建参数,内容你自己填写吧。^_^
    ADOStoredProc1.Parameters.ParamByName('@end_time').value:=strtodatetime(datetostr(datetimepicker3.Date)+' ' + timetostr(datetimepicker4.Time));
    ADOStoredProc1.ExecProc ;