窗体上有两个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;
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;
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;