上面这句变成SQL语句应是:where 'date'='03/05/2001'对吗?}
 
应为 
     where date='03/05/2001'   datamodule1.Query1.SQL.Add('where date '''+combobox2.text+'''edit1.text''');
   
要注意空格!

解决方案 »

  1.   

    你有一行语句写错了:
    datamodule1.Query1.SQL.Add('where '+'''date'''+combobox2.text+'''edit1.text''');
    如果DATE是字段的名字,就不能加引号,加了引号就表示是判断字符串“DATE”和日期字串是否相等了,这是一个永远也不会满足的条件,当然什么也查不出来。
    至于日期格式,PARADOX好象就那样,你得自己进行转换
      

  2.   

      datamodule1.Query1.SQL.Add('where date '''+combobox2.text+'''edit1.text''');
      应为
      ('where date '''+combobox2.text+''''+edit1.text+'''');
      

  3.   

    如果去掉date的两个'',程序出错提示为lnvalid use of keyword
                                       token:date
                                       line number:2
    可是如果单独执行下面这句却可以:
    SELECT Szb."Date", Doc, Sr, Zc, Jsr
    FROM "szb.db" Szb
    WHERE  Szb."Date" = '03/05/2001'
    这里面的date是带“号的,我就是弄不明白这点。
      

  4.   

    改用下面一句试试:
    datamodule1.Query1.SQL.Add('where "date" '+combobox2.text+' "'+edit1.text+'"');
    另外可用ShowMessage来检察语句是否正确:
    ShowMessage(datamodule1.Query1.SQL.Text);  
      

  5.   

    to brow:SELECT Szb."Date", Doc, Sr, Zc, Jsr
    FROM "szb.db" Szb
    WHERE  Szb."Date" = '03/05/2001'
    这一句中,由于Date是SQL 的关键字,所以要加引号,而日期常量的顺序是'mm/dd/yyyy'(引号不能少)。正因为paradox 的日期有问题,我奉劝你还是将日期型转为字符型比较好。
      

  6.   

    上面的方法我虽然试过都不行,但有一种答案却可以:
    begin
      datamodule1.Query1.Close;
      with datamodule1.Query1.sql do
        begin
        clear;
        add('select * from szb.db');
        add(' where datefieldname=:date1');
        end;
      datamodule1.Query1.parambyname('date1').asdatetime:=strtodatetime(edit1.text);
      //如果这一步出错,则说明在edit1内输入的日期格式不对.(yyyy-mm-dd)
      datamodule1.DataSource1.DataSet :=datamodule1.query1;
      datamodule1.Query1.open;
    end;
    在上段代码中,看起来最终的SQL语句是一样的,,所不同的是日期型的字段名没加“号,而且=后面是日期型的数据,可以正确执行,输入2001-03-05或者01-03-05或得01-3-5都可以查到,为什么有这样的结果,用SQL编辑器生的SQL语句是
    SELECT Szb."Date", Doc, Sr, Zc, Jsr
    FROM "szb.db" Szb
    WHERE  Szb."Date" = '03/05/2001' 呀?
    而前段代码中的SQL语句我理解为where date=strtodate(edit1.text);
    这究竟是怎么回事?
      

  7.   

    用floattostr(int(edit1.text)))试一下,在Access中是这样用的:)
      

  8.   

    floattostr(int(edit1.text))),其中edit1.text中输入2001-03-05
      

  9.   

    以下代码已经通过测试:
    query1.sql.add('select * from test.db where "date"'+combobox1.text+'"'+edit1.text+'"');问题的关键是由于DATE类型,要用双引号引起来。
      

  10.   

    对于paradox对日期的操作,常采用table1.fieldbyname('字段').asdatetime来完成转换。
    对于输入框,常采用strtodate()来完成数据的转换。