procedure TForm1.ButtonStartClick(Sender: TObject); beginwith Query1 dobeginclose;//注1SQL.clear;SQL.add('select * from log');
ParamByName('d1').AsString := (Datetostr(DateTimePicker1.Date ));
ParamByName('d2').AsString := (Datetostr(DateTimePicker2.Date));SQL.add(' where SEQNO 'd1' AND 'd2'');prepare;open;
end;
 end;----------------------------------------------------------
程序想让用户,通过选择时间,设出时间区间,并显示区间中的数据但是我这写。~~呵呵。。他报[Error] Unit1.pas(53): ')' expected but identifier 'd1' found请教。。我这样做,对不对??应该用什么方法?

解决方案 »

  1.   

    SQL.add('select * from log');
    ParamByName('d1').AsString := (Datetostr(DateTimePicker1.Date ));
    ParamByName('d2').AsString := (Datetostr(DateTimePicker2.Date));SQL.add(' where SEQNO 'd1' AND 'd2'');////**时不是应该改成
    sql.add(' where SEQNO BETWEEN '''+d1+''' and '''+d2+'''');
    或者
    sql.add(' where SEQNO BETWEEN '+d1+' and '+d2);
      

  2.   

    SQL.add('select * from log');
    ParamByName('d1').AsString := (Datetostr(DateTimePicker1.Date ));
    ParamByName('d2').AsString := (Datetostr(DateTimePicker2.Date));SQL.add(' where SEQNO 'd1' AND 'd2'');
    =======>
    SQL.add('select * from log');
    sql.add(' where 字段>=:Pd1 and 字段<=:Pd2    ');
    ParamByName('Pd1').AsDateTime := DateTimePicker1.Date;
    ParamByName('Pd2').AsDateTime := DateTimePicker2.Date;
      

  3.   

    对了 sql里面的动态变量需要加冒号
      

  4.   

    SQL.add('select * from log');
    sql.add(' where STARTTIME>=:Pd1 and STARTTIME<=:Pd2    ');
    ParamByName('Pd1').AsDateTime := DateTimePicker1.Date;
    ParamByName('Pd2').AsDateTime := DateTimePicker2.Date;
    ------------------------------------------------------------
    谢谢楼上的,
    为什么加个':P'就好了呢?是delphi里规定的吗?还有,比较有点不对哦。我STARTTIME字段中,日期格式为XXXX-XX-XX XX:XX:XX
    与我用DateTimePicker取来的日期做比较时,
    比方说 "2003-10-13 12:09:23">="2003-10-13" 它们结果就不对了。。怎么做才对???
      

  5.   

    呵呵 这是delphi的Sql参数形式,看看你的结果正确吗 尤其是对时间边界的检查
      

  6.   

    :p表示动态参数。delphi上就是这么干的。
    最好把日期统一为一种格式yyyy-mm-dd hh:mm:ss格式
      

  7.   

    where 字段 between :d1 and :d2