请教一个delphi+report machine的问题,一直没想出个思路来

shandongbuyi 2010-08-20 08:42:57
请教一个delphi+report machine的问题:

ADOdataset查询的数据库记录,想通过report machine打印出来。打印全部的话没问题,直接把
ADOdataset绑到打印控件。但是我想动态打印,就是说打印的字段不是定死的,前面查询的哪些字段就打印哪些字段的值,这样该怎么实现?



动态传递标题过去是可以了:
//生成表头
x:=ulink.mylist;
y:=',';
mytitle:=split(x,y);

//传递内容



//传递表头
RMVariables['title1']:=zifuprint(mytitle[0]);
RMVariables['title2']:=zifuprint(mytitle[1]);
RMVariables['title3']:=zifuprint(mytitle[2]);
RMVariables['title4']:=zifuprint(mytitle[3]);
RMVariables['title5']:=zifuprint(mytitle[4]);
RMVariables['title6']:=zifuprint(mytitle[5]);



//执行打印操作
RMReport1.LoadFromFile('printxuesheng.rmf');
RMReport1.ShowReport;// 打印预览
RMReport1.PrepareReport;


报表里能接收到表头。dataset里的内容该怎么接收过来?
...全文
254 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
shandongbuyi 2010-08-22
  • 打赏
  • 举报
回复
哪里有关于report machine的编程教程?搜索了好久,只搜索到一些基本的用法,只有20%,不全。

我想动态设置打印的字段,一直没找到方法。
bdmh 2010-08-20
  • 打赏
  • 举报
回复
只能动态的去不就模板中的edit的位置及字段属性了,reportmaichine及fr等做动态报表不是很方便,你可以找一些类似excel的报表组件,比如cell组件,f1book等,或者有一些可以打印grid的组件
奔雷手 2010-08-20
  • 打赏
  • 举报
回复
我一般的做法 不在FR 里放 ADO;
在Form1放ADO,把SQL语句写好,ADO.OPEN。
然后在FR里设置字段。
建议 动态的字段 放一个ADOQUERY,主项数据是可以动态数据。
shandongbuyi 2010-08-20
  • 打赏
  • 举报
回复
就是kye_jufei写的格式,现在问题是:[ADOQuery2."xzqhmc"]这个地方字段名固定了,我想让他变成动态的。
lovewjp 2010-08-20
  • 打赏
  • 举报
回复
我只用过FR做过动态打印的,在FR里写脚本控制。
kye_jufei 2010-08-20
  • 打赏
  • 举报
回复
先說明一下:REPORTMACHINE報表組件製作報表非常方便、簡單,功能相當強悍;一些在FR中的複雜報表,在RM中是很好處理的。。。動態打印也很友好:

...............
1、資料表t_table結構以及資料:
xzqhmc  zydm  zymc            GS
荔灣區 010101 馬克思主義哲學 0
越秀區 010101 馬克思主義哲學 0
海珠區 010101 馬克思主義哲學 0
天河區 010101 馬克思主義哲學 1
白雲區 010101 馬克思主義哲學 0
黃埔區 010101 馬克思主義哲學 1
番禺區 010101 馬克思主義哲學 0
花都區 010101 馬克思主義哲學 0
南沙區 010101 馬克思主義哲學 0
蘿崗區 010101 馬克思主義哲學 0
增城市 010101 馬克思主義哲學 0
從化市 010101 馬克思主義哲學 0
荔灣區 010105 倫理學 0
越秀區 010105 倫理學 0
海珠區 010105 倫理學 0
天河區 010105 倫理學 1
白雲區 010105 倫理學 0
黃埔區 010105 倫理學 0
番禺區 010105 倫理學 0
花都區 010105 倫理學 1
南沙區 010105 倫理學 0
蘿崗區 010105 倫理學 0
增城市 010105 倫理學 0
從化市 010105 倫理學 0
荔灣區 010107 宗教學 0
越秀區 010107 宗教學 0
海珠區 010107 宗教學 0
天河區 010107 宗教學 1
白雲區 010107 宗教學 0
黃埔區 010107 宗教學 0
番禺區 010107 宗教學 0
花都區 010107 宗教學 0
南沙區 010107 宗教學 1


2、在delphi中設置好兩個adoquery,語句分別是:SELECT DISTINCT (zymc) FROM t_table;
SELECT DISTINCT (xzqhmc) FROM t_table,並且設置兩個對應的RMDBDataSet控制項:

3、報表相關設置:
(1) 在報表模版中資料字典增加變數 GS
(2) 放上主項標題、主項資料、主項注腳、交叉表標頭、交叉表資料、交叉表注腳
(3)分別設置主項資料和交叉表資料的資料來源
(4)在交叉表標頭和主項資料交匯的地方放上TRMMemoview,內容為:[ADOQuery2."xzqhmc"]
(5)在主項資料與交叉表標頭交匯的地方放上TRMMemoview,內容為:[ADOQuery1."zymc"]
(6)在主項資料與交叉表資料交匯的地方放上TRMMemoview,內容為:[GS]

4、在delphi中的RmReport控制項的GetValue事件中寫如下代碼:
procedure TForm1.RMAllGetValue(const ParName: String;
var ParValue: Variant);
var
Sql :String;
ss :String;
begin
ss := ParName;

if ss = 'GS' then
begin
Sql := 'Select gs from t_table where xzqhmc='+''''+Adoquery2.Fields[0].AsString+''''+' and zymc='+
''''+adoquery1.Fields[0].AsString+'''';
qryRep.Close;
qryRep.SQL.Clear;
qryRep.SQL.Add(Sql);
qryRep.Open;
RMVariables['GS'] := qryRep.Fields[0].AsString;
{ i := i + 1;
RMVariables['GS'] := IntToStr(i); }
end;
end;


5、列印按鈕的代碼:
rmall.LoadFromFile('19.rmf');
rmall.ShowReport;
...............

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧