关于QReport打印报表的问题,急!请高手指点!
我用QRrport控件做报表,连接的数据库是ACCESS,用QRExpr来连接access表里的每个字段。有两种打印方式,一个是按时间段查询记录然后打印出来;另一个是打印所以的记录,这两种方式连接的是同一个表。按时间段查询记录并打印,先打开报表,然后用过滤方式过滤掉不要的记录,再打印,相关程序如下所示:
打开数据库,连接,激活:
PrintForm->ADOConnection1->Connected=true;
PrintForm->ADOTable1->Open();
PrintForm->ADOTable1->Active=true;
过滤掉不要的记录并显示报表:
String str_find;
str_find="日期>= '"+str_StartDate+"'"+"and 日期<='"+str_EndDate+"'";
ADOTable1->Filter=str_find;
ADOTable1->FilterOptions.Clear();
ADOTable1->Filtered=true;
QuickRep1->Preview(); //打印报表
ADOTable1->Filtered=false;
关闭数据库:
PrintForm->ADOTable1->Active=false;
PrintForm->ADOConnection1->Connected=false;
PrintForm->ADOTable1->Close();
第二种打印方式是全部打印,此时我就直接打开ACCESS数据库,然后打印,相关程序如下:
PrintForm->ADOConnection1->Connected=true;
PrintForm->ADOTable1->Open();
PrintForm->ADOTable1->Active=true;
PrintForm->QuickRep1->Preview(); //打印报表
PrintForm->ADOTable1->Active=false;
PrintForm->ADOConnection1->Connected=false;
PrintForm->ADOTable1->Close();
很奇怪的是,数据库存的数据是按时间先后顺序保存的,但是打印时却乱了,后存的数反而跑到了先存的数前面了。
不知道这是为什么,请高手指点一二!
[解决办法]
顶起来学习
[解决办法]
建议用TQuery取数据还可以对数据进行排序等。这样就可以控制顺序了。
[解决办法]
或者你的控件排序了;或者你的SQL语句排序了
[解决办法]
先进行排序 order by time
再输出打印