如果是整型的话, 不如改用以下方法:query1.Close; query1.SQL.Clear; query1.SQL.Add('select * from 表 where (帐单日期-年 >= :StartYear and 帐单日期-月 >=:StartMonth) and (帐单日期-年 <= :EndYear and 帐单日期-月 <=:EndMonth'); query1.ParamByName('StartYear').AsString:= YearOf(edit1.text); query1.ParamByName('StartMonth').AsString:= MonthOf(edit1.text); query1.ParamByName('EndYear').AsString:= YearOf(edit2.text); query1.ParamByName('EndMonth').AsString:= MonthOf(edit2.text); query1.Open ; 另外,我想问一下,我试过这样写,为什么不行? Select * From TableName WHERE Convert(SmallDateTime, (帐单日期-年+'-'+帐单日期-月)) Between '2002-1-1' and '2002-7-1'
begin query1.Close;
query1.SQL.Clear;
query1.SQL.Add('select * from 表 where (帐单日期-年+'-'+帐单日期-月)>=:b,and (帐单日期-年+'-'+帐单日期-月)<=:e');
query1.ParamByName('b').AsString:=edit1.text;
query1.ParamByName('e').AsString:=edit2.text;
end;
但我这样调试有错呀
//多了个','号!
begin query1.Close;
query1.SQL.Clear;
query1.SQL.Add('select * from 表 where (帐单日期-年+"-"+帐单日期-月)>=:b,and (帐单日期-年+"-"+帐单日期-月)<=:e');
query1.ParamByName('b').AsString:=edit1.text;
query1.ParamByName('e').AsString:=edit2.text;
end;
sql里用双引号!
如果是字符串类型的话,'10' < '7',所以建议将'7'改为'07';
如果是整型的话, 不如改用以下方法:query1.Close;
query1.SQL.Clear;
query1.SQL.Add('select * from 表 where (帐单日期-年 >= :StartYear and 帐单日期-月 >=:StartMonth) and (帐单日期-年 <= :EndYear and 帐单日期-月 <=:EndMonth');
query1.ParamByName('StartYear').AsString:= YearOf(edit1.text);
query1.ParamByName('StartMonth').AsString:= MonthOf(edit1.text);
query1.ParamByName('EndYear').AsString:= YearOf(edit2.text);
query1.ParamByName('EndMonth').AsString:= MonthOf(edit2.text);
query1.Open ;
另外,我想问一下,我试过这样写,为什么不行?
Select * From TableName WHERE Convert(SmallDateTime, (帐单日期-年+'-'+帐单日期-月)) Between '2002-1-1' and '2002-7-1'