读书人

怎么按年度进行查询

发布时间: 2012-02-11 09:51:35 作者: rapoo

如何按年度进行查询?
公司要求至少保存三年的销售纪录,数据库中有一 "销售时间 "字段,
类型:2007-1-19 16:06:06,数据库为Access,用ADOQuery查询,窗体中有一ComboBox,用来选择不同年份。
问题:
1.如何获取数据库中“销售时间”的年份,如:2006,动态添加到ComboBox的选项中去。
2.如何使用ADOQuery查询当年的纪录?

[解决办法]
1:再FORMSHOW里:
String sql;
TDateTime dt;
sql= "select * from pro ";
ADOQuery1-> Close();
ADOQuery1-> SQL-> Clear();
ADOQuery1-> SQL-> Text=sql;
ADOQuery1-> Open();
for(int i=0;i <ADOQuery1-> RecordCount;i++)
{
dt=ADOQuery1-> FieldByName( "year ")-> AsDateTime;
ComboBox1-> Items-> Add(dt.FormatString( "yyyy-m-d "));
ADOQuery1-> Next();
}
2:查询按钮里:
String sql;
if(ComboBox1-> Text== " ")
ShowMessage( "请选择要查询的年份! ");
else
{
sql= "select * from pro where year like '% "+ComboBox1-> Text+ "% ' ";
ADOQuery1-> Close();
ADOQuery1-> SQL-> Clear();
ADOQuery1-> SQL-> Text=sql;
ADOQuery1-> Open();
}
[解决办法]
year(date) = ‘2006’
[解决办法]
SELECT COUNT(*),YEAR(t),MONTH(t) FROM 表 GROUP BY YEAR(t),MONTH(t);
认真研究这个吧.我给的不是直接答案,自己发挥一下.如果还有问题再找我.

[解决办法]
写个后台的存储进程把,那样效率高,直接放到服务器上执行就可以了
[解决办法]
现在的代码可以光把年份放到ComboBox1中
String sql;
TDateTime dt;
unsigned short temp=0;
sql= "select * from test ";
ADOQuery1-> Close();
ADOQuery1-> SQL-> Clear();
ADOQuery1-> SQL-> Text=sql;
ADOQuery1-> Open();
ADOQuery1-> Sort= "sdate ASC ";
for(int i=0;i <ADOQuery1-> RecordCount;i++)
{
dt=ADOQuery1-> FieldByName( "sdate ")-> AsDateTime;
if(YearOf(dt)> temp)
{
ComboBox1-> Items-> Add(YearOf(dt));
temp= YearOf(dt);
}
ADOQuery1-> Next();
}

读书人网 >C++ Builder

热点推荐