selcet sum( work_hours ) as sumr from overtime 
where person = :person and work_date >= :starttime and 
work_date <= :endtime在程序里一执行到打开对应的TQuery表就出错其中starttime和endtime是TDateTime类型的,并且跟踪进去发现是赋值正确的请问是啥原因?overtime表很简单
ID Integer
PERSON Char(6)
WORK_Hours smallint
Work_date  TimeStamp

解决方案 »

  1.   

    TQuery的参数输入/出类型没有指定吧
      

  2.   

    如果你是动态查询的话,是否设定person, starttime, endtime 参数
    如:query1.sql.clear;
    query1.sql.add('selcet sum( work_hours ) as sumr from overtime' );
    query1.sql.add('where');
    query1.sql.add('person = :person ');
    query1.sql.add('and work_date >= :starttime' );
    query1.sql.add('and work_date <= :endtime');
    query1.params[0].AsString   := Person;
    query1.Params[1].AsDateTime := StartTime;
    query1.Params[2].AsDateTime := EndTime;
    query1.close;
    query1.open;
      

  3.   

    估计你用的是Delphi自带的桌面型数据库,TimeStamp数据类型在SQL语句行不通,
    建议采用别的方法来实现同样的功能。
    如果用SQL Server作为数据库,就不会出现这种情况了。
      

  4.   

    你的冒号是什么意思啊?
    冒号是Delphi的语法,怎么写到了SQL中?
      

  5.   

    sum类型求和,但没有满足条件的记录就只能返回Null值了我现在用一个判断语句跳过这问题了谢谢各位