var
 begintime: Tdatetime;
 endtime : Tdatetime;procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
Try
  ADOQuery1.Parameters.ParamByName('begintime').Value := DateTimePicker1.DateTime;
  ADOQuery1.Parameters.parambyname('endtime').Value := DateTimePicker2.DateTime;
  ADOQuery1.sql.Add('select * from Table1 where call =''' +Edit2.Text+''' and begin<:endtime and begin >: begintime');
except
ADOQuery1.SQL.Clear;
ADOQuery1.sql.Add('select * from Table1 where call ='''+Edit2.Text+'''');
end;
ADOQuery1.Open;
ADOQuery1.Active := True;
end;有错误!!没有找到"begintime" 我已经定义过SQL变量begintime和endtime了 不知道为什么?

解决方案 »

  1.   

    这肯定有问题了.
    ADOQuery1.Close; 
    ADOQuery1.SQL.Clear; ---看你这部分,已经把sql清了,所以就出问题了.
    Try 
      ADOQuery1.Parameters.ParamByName('begintime').Value := DateTimePicker1.DateTime;
      

  2.   

    使用 select * from where a : A
    这种方法的时候需要adoquery1.Prepared := false;
    赋值
    Prepared:=true;
      

  3.   

      ADOQuery1.sql.Add('select * from Table1 where call =''' +Edit2.Text+''' and begin <:endtime and begin > : begintime'); 
      ADOQuery1.Parameters.ParamByName('begintime').Value := DateTimePicker1.DateTime; 
      ADOQuery1.Parameters.parambyname('endtime').Value := DateTimePicker2.DateTime; 换一下位置吧
      

  4.   

    已经定义过SQL变量begintime和endtime了var 
     begintime: Tdatetime; 
     endtime : Tdatetime; 
    就在这里定义的?
      

  5.   

    好像没有定义吧。你只是赋值了。
    params.create('')
    不是上面的这样定义吗?
      

  6.   


    var 
     begintime: Tdatetime; 
     endtime : Tdatetime; procedure TForm1.Button1Click(Sender: TObject); 
    begin 
    ADOQuery1.Close; 
    ADOQuery1.SQL.Clear;-----------------------------------你将SQL.TXT清了,何来变量??????? 
    Try 
      ADOQuery1.Parameters.ParamByName('begintime').Value := DateTimePicker1.DateTime; 
      ADOQuery1.Parameters.parambyname('endtime').Value := DateTimePicker2.DateTime; 
      ADOQuery1.sql.Add('select * from Table1 where call =''' +Edit2.Text+''' and begin <:endtime and begin >: begintime'); 
    except 
    ADOQuery1.SQL.Clear; 
    ADOQuery1.sql.Add('select * from Table1 where call ='''+Edit2.Text+''''); 
    end; 
    ADOQuery1.Open; 
    ADOQuery1.Active := True; 
    end; 
      

  7.   


    var 
     begintime: Tdatetime; 
     endtime : Tdatetime; procedure TForm1.Button1Click(Sender: TObject); 
    begin 
    ADOQuery1.Close; 
    ADOQuery1.SQL.Clear;
    Try 
        ADOQuery1.sql.Add('select * from Table1 where call =''' +Edit2.Text+''' and begin <:endtime and begin >: begintime'); 
      ADOQuery1.Parameters.ParamByName('begintime').Value := DateTimePicker1.DateTime; 
      ADOQuery1.Parameters.parambyname('endtime').Value := DateTimePicker2.DateTime; except 
    ADOQuery1.SQL.Clear; 
    ADOQuery1.sql.Add('select * from Table1 where call ='''+Edit2.Text+''''); 
    end; 
    ADOQuery1.Open; 
    end; 
      

  8.   

    var 
     begintime: Tdatetime; 
     endtime : Tdatetime; 
    这3行不需要,然后 要用Datetimetostr做转换  ADOQuery1.sql.Add('select * from Table1 where call =''' +Edit2.Text+''' and begin  <:endtime and begin > : begintime');  
      ADOQuery1.Parameters.ParamByName('begintime').Value := Datetimetostr(DateTimePicker1.DateTime);  
      ADOQuery1.Parameters.parambyname('endtime').Value := Datetimetostr(DateTimePicker2.DateTime);