我使用了bde的tquery做了一個查詢:
    with Query1 do
    begin
      close ;
      sql.clear ;
      sql.add('select * from jinput where (date>=:date) and (job_no=:job_no)') ;
      params[0].value:=strtodate('01/01/2004') ;
      params[1].value:=d.fieldbyname('job_no').Value ;
      prepare ;
      open ;
    end ; 
運行時出錯: 'Invaild use of keyword Token: date>=?) Line number: 1'說明: jinput表是clipper的表,date是這個表的一個字段名.
本來只需要select * from jinput where job_no=:job_no,不需要加日期限制,但是考慮到該表有6萬條記錄,查詢太慢,為了提高速度,才加上的,還沒來的及驗證是否會真的提高速度,程序就出錯了,現請高手幫忙解決:
1. 出錯的原因是甚麼.
2. 提高查詢速度還有其他好的辦法嗎?
 

解决方案 »

  1.   

    把你的数据库字段date改为 jobdate即可,用这个字段查询
      

  2.   

    字段date命名使用了关键字,给字段改个名。
      

  3.   

    给楼主提个醒
    sql.add('select * from jinput where (date>=:date) and (job_no=:job_no)') ;
          params[0].value:=strtodate('01/01/2004') ;  //这句有问题sql语句中涉及到日期的写法: today >= '01/01/2004' ,日期是用单引号括起来字符串。
       params[0].value:=strtodate('01/01/2004')应改为
       params[0].value:=QuotedStr('01/01/2004'); //params[0]的数据类型应改为兼容字符串得类型