首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

关于QReport打印报表的有关问题,请

2012-11-16 
关于QReport打印报表的问题,急!请高手指点!我用QRrport控件做报表,连接的数据库是ACCESS,用QRExpr来连接ac

关于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
再输出打印

热点排行