用的是delphi+sql server+ado,
查询时间的时候是这么写的
procedure TFrm_query.BitBtn_queryClick(Sender: TObject);
var
  asql:string;
begin  if checkbox1.Checked
     then asql:='and(reg_date > :d1) and (reg_date< :d2)' ;  if asql<>''
    then begin
       adoquery_inspect.SQL.Clear;
       adoquery_inspect.Close;
       adoquery_inspect.SQL.Text:='select * from tb_inspect where check_year is not null '+asql;       if checkbox1.Checked
         then begin
                frm_query.ADOQuery_inspect.Parameters[0].asdatetime:=datetimepicker1.date;
                frm_query.ADOQuery_inspect.parameters[1].asdatetime:=datetimepicker2.date;
              end;       adoquery_inspect.Open;
      
    end
    else showmessage('请输入查询条件');    end;
但是在ADOQuery_inspect.Parameters[0].asdatetime:=datetimepicker1.date;报错
大概是sadatetime用的不对,请问为什么?如何修改呢?

解决方案 »

  1.   

    frm_query.ADOQuery_inspect.Parameters[0].asdatetime:=datetimepicker1.date;
                    frm_query.ADOQuery_inspect.parameters[1].asdatetime:=datetimepicker2.date;改成
                    frm_query.ADOQuery_inspect.Parameters[0].Value :=datetimepicker1.date;
                    frm_query.ADOQuery_inspect.parameters[1].Value :=datetimepicker2.date;
    asdatetime不对
    把它改成Value,它全是Variant型的
    就行啦,我测试通过