在Form1上根据datetimepicker1和datetimepicker2时间区间查询数据。where operno='''+edit1.text+''' and handletime>='''+datetimepicker1''' and handletime<='''+datetimepicker2'''以上代码出现错误,请指教!

解决方案 »

  1.   

    where operno='''+edit1.text+''' and handletime>='''+FormatDateTime('yyyy-mm-dd',datetimepicker1.Date)+''' and handletime <='''+FormatDateTime('yyyy-mm-dd',datetimepicker2.Date)+'''' 
      

  2.   


    procedure TForm1.Button1Click(Sender: TObject);
    var
    s1,s2:string;
    begin
     s1:=FormatDateTime('yyyy-mm-dd',DateTimePicker1.date);
     s2:=FormatDateTime('yyyy-mm-dd',DateTimePicker2.date); with adoquery1 do begin
      close;
      sql.Text:='select * from ±íÃû where operno='+QuotedStr(edit1.Text)+' and handletime>='+QuotedStr(s1)+' and handletime<='+QuotedStr(s2);
      open;
     end;end;
      

  3.   


    procedure TForm1.Button1Click(Sender: TObject);
    var
    s1,s2:string;
    begin
     s1:=FormatDateTime('yyyy-mm-dd',DateTimePicker1.date);
     s2:=FormatDateTime('yyyy-mm-dd',DateTimePicker2.date); with adoquery1 do begin
      close;
      sql.Text:='select * from 表名 where operno='+QuotedStr(edit1.Text)+' and handletime>='+QuotedStr(s1)+' and handletime<='+QuotedStr(s2);
      open;
     end;end;
      

  4.   


    字段都正确,又出现这个错误:
    [Error] Unit1.pas(51): Undeclared identifier: 'HandleTime'
    [Error] Unit1.pas(51): ')' expected but identifier 'yyyy' found
    [Error] Unit1.pas(51): Operator not applicable to this operand type
    [Error] Unit1.pas(51): Incompatible types: 'String' and 'Integer'
    [Error] Unit1.pas(52): Incompatible types: 'String' and 'Integer'
    [Fatal Error] Project2.dpr(5): Could not compile used unit 'Unit1.pas'
      

  5.   

    handletime字段值是这样的:2008-05-09 17:43:41.950
      

  6.   

    strsql: string;
    strsql := 'select * from tbl where operno='''+edit1.text+''' and handletime>='''+FormatDateTime('yyyy-mm-dd',datetimepicker1.Date)+''' and handletime <='''+FormatDateTime('yyyy-mm-dd',datetimepicker2.Date)+''''
      

  7.   


    ' Select * from 表名 where operno='''+edit1.text+''' and handletime>='''+FormatDateTime('yyyy-mm-dd',datetimepicker1.Date)+''' and handletime  <='''+FormatDateTime('yyyy-mm-dd',datetimepicker2.Date)+''' ' 
    注意换行与空格,每次换行后单引号要紧加个空格才能形成正确的SQL语句
    如:(错误写法)
     'Select * from'
    +'表名 where ....'(正确写法)
     ' Select * from'
    +'   表名 where ....'
      

  8.   

    完整代码是:
    begin
     if edit1.Text='' then
        begin
        application.MessageBox('输入操作员号不能为空','提示',0+64);
        exit;
        end;
        ADOquery1.SQL.Clear;
        ADOquery1.Close;
        ADOquery1.SQL.Add('select peono as 工号,peoname as 姓名,cardno as 卡号,'
       +'opertype as 类型,handletime as 挂失时间,operno as 操作员,'
       +'opername as 操作员姓名 from mcardled'
       +'where operno='''+edit1.text+'''order by handletime');
       +'where operno='''+edit1.text+''' and handletime>='''+FormatDateTime('yyyy-mm-dd',datetimepicker1.Date)+''' and handletime <='''+FormatDateTime('yyyy-mm-dd',datetimepicker2.Date)+'''');
        dbgrid1.Font.Color:=clteal;
        ADOquery1.Open;
        edit1.SetFocus;
        edit1.SelectAll;   if ADOquery1.RecordCount=0 then
        begin
        application.MessageBox('你输入的数据不存在','提示',0+64);
        exit;
        end;
    end;
      

  9.   

        ADOquery1.SQL.Add('select peono as 工号,peoname as 姓名,cardno as 卡号,' 
      +'opertype as 类型,handletime as 挂失时间,operno as 操作员,' 
      +'opername as 操作员姓名 from mcardled' 
      +'where operno='''+edit1.text+'''order by handletime'); //多了');',去掉.
    ------------>+'where operno='''+edit1.text+'''order by handletime'
      +'where operno='''+edit1.text+''' and handletime>='''+FormatDateTime('yyyy-mm-dd',datetimepicker1.Date)+''' and handletime <='''+FormatDateTime('yyyy-mm-dd',datetimepicker2.Date)+''''); 
        dbgrid1.Font.Color:=clteal; 
        ADOquery1.Open; 
      

  10.   

    谢谢大家了,找到原因了。
    多了一个单引号。
    operno='''+edit1.text+'''' and