窗体上有两个DateTimePicker1控件(st,en)用来存放日期,请问如何查询(如count表中的date1字段)年月在此范围内的记录,我写了以下的代码,但运行不对,请各位高手帮忙!
var
 y1,m1,y2,m2:string;
begin
  y1:=formatdatetime('yyyy',st.date);
  y2:=formatdatetime('yyyy',en.date);
  m1:=formatdatetime('m',st.date);
  m2:=formatdatetime('m',en.date);
  ADODataSet1.Close;
  ADODataSet1.CommandText:='SELECT * FROM [count] WHERE (YEAR(date1) >= '''+y1+''') AND (YEAR(date1)<= '''+y2+''') AND (month(date1) >= '''+m1+''') AND (month(date1)<= '''+m2+''')';
  ADODataSet1.Open;

解决方案 »

  1.   

    ADODataSet1.CommandText:='SELECT * FROM [count] WHERE (YEAR(date1) >= '+y1+') AND (YEAR(date1)<= '+y2+') AND (month(date1) >= '+m1+') AND (month(date1)<= '+m2+')';
      

  2.   

    语句这样写就可以了:ADODataSet1.Close;
      ADODataSet1.CommandText:='SELECT * FROM [count] WHERE date1 between :st and :en;
    //有参数列表,加这两句给参数赋值
      adodataset1.parameters.paramebyname('st').value := st.date;
      adodataset1.parameters.paramebyname('en').value := en.date;  ADODataSet1.Open;