send.sql.Add('select * from register where [DATETIME1]>='''+DateTimeToStr(DateTimePicker1.DateTime)+''' and [DATETIME1]<='''+DateTimeToStr(DateTimePicker2.DateTime)+'''')

解决方案 »

  1.   

    send.sql.Add('select * from register where DATETIME1
    between '''+
    DateTimeToStr(DateTimePicker1.DateTime)+''' and '''+
    DateTimeToStr(DateTimePicker2.DateTime)+'''';注意:你的DATETIME1必须是日期时间型!!!
    也可以这样:send.sql.Add('select * from register where DATETIME1
    between '''+
    FormatDateTime('yyyy-mm-dd hh:nn:ss',DateTimePicker1.DateTime)+''' and '''+
    FormatDateTime('yyyy-mm-dd hh:nn:ss',DateTimePicker2.DateTime)+'''';
      

  2.   

    不用多加引号
    send.sql.Add('select * from register where ([DATETIME1]>='+DateTimeToStr(DateTimePicker1.DateTime)+' and [DATETIME1]<='+DateTimeToStr(DateTimePicker2.DateTime)+')') 
     
      

  3.   

    这样写程序不好,其实datetime是一个浮点数,我觉得用参数是最好的了。
    send.sql.Add('select * from register ');
    send.sql.add('where Datetime1>=:DateTime1 and');
    send.sql.add('DateTime1<=:DateTime2');
    send.paramByName('Datetime1').asDatetime:=DateTimePicker1.DateTime;
    Send.paramByName('DateTime2').asDateTime:=DateTimePicker2.DateTime;这样写程序清晰明了。
      

  4.   

    其实大家调试程序时,可以把SQL语句放到Memo1.text中。
    然后运行时,把Memo1.Text内容放到Access数据库中运行一下就知道出什么错误了:)Memo1.Text:=send.sql.text;
      

  5.   

    delphi_user(皮皮虾) 
    你的方法不行
    我在Explore 中运行要把'改为#就对了,
    afeisky(刀光剑影)(编程累了就上来看看:) 你的方法还可以再加其它条件吗???
      

  6.   

    哦,我明白了,你在数据库存储的不是Datetime类型,而是string类型。我的方法一样也可以用,只不过把asDateTime改为asString.
    Send.paramByName('DateTime2').asString:=DateTimeToStr(DateTimePicker2.DateTime)
      

  7.   

    send.sql.Add('select * from register ');
    send.sql.add('where (Datetime1>=:DateTime1) and ');//and后有一个空格
    send.sql.add('(DateTime1<=:DateTime2)');
    send.paramByName('Datetime1').asDatetime:=DateTimePicker1.DateTime;
    Send.paramByName('DateTime2').asDateTime:=DateTimePicker2.DateTime;
      

  8.   

    都错了,access数据库的日期时间用#日期 时间#格式更新或查询
    select * from date where 时间 between #2002-01-02 10:00:00# and #2002-01-02 10:30:00#
      

  9.   

    在between中还可以加其它查询条件
      

  10.   

    实际上用参数是解决这类问题的关键(再也不用考虑几个单引号了):
    send.sql.Add('select * from register where DATETIME1 between :datetimeA and :datetimeB');
    send.parambyname('datetimeA').asdatetime:=DateTimePicker1.DateTime;
    send.parambyname('datetimeB').asdatetime:=DateTimePicker2.DateTime;
    而且其它的条件也照样可以加!
      

  11.   

    在between中不可以加入其它查询条件,但是用括号将它括起来,放在外面不就要可以了吗!!!
    send.sql.Add('select * from register 
    where (DATETIME1 between :datetimeA and :datetimeB) and 姓名=:name');
    send.parambyname('datetimeA').asdatetime:=DateTimePicker1.DateTime;
    send.parambyname('datetimeB').asdatetime:=DateTimePicker2.DateTime;
    send.parambyname('name').asstring:='张三';
      

  12.   

    procedure Tm_gbjbxxform.BitBtn1Click(Sender: TObject);
    var
      sqltext:string;
    begin
     if combobox54.Text <>'' then
       begin
         if (combobox54.Text='出生年月') or (trim(combobox54.Text) ='参加工作时间') then
          begin
           with gbjbxxquery_1 do
             begin
               close;
               sql.Clear ;
               //sql.add('select * from m_jbqk where str = #'+DateToStr(datetimepicker7.datetime)+'#');
               sql.add('select * from m_jbqk where '+ str +'=:Date1');
               ParamByName('Date1').value:=datetimepicker7.DateTime ;
               open;
             end;
          end
    参考
      

  13.   

    在程序另运行通过;
    d5+sql7/sql2000
    d6+sql7/sql2000