procedure TForm28.frReport1GetValue(const ParName: String;
var ParValue: Variant);
var ReportUserCode:string;
begin
ReportUserCode:=form2.ListClientInfo.fieldbyname('USER_code').AsVariant;
with form2.ListClientInfo2 do
begin
close;
sql.Text:='select * from ClientHuman where USER_code='+SqlCheckString(ReportUserCode)+' and USER_flag=0';
open;
frReport1.FindObject('Ma1').Memo.Text:=form2.ListClientInfo2.fieldbyname('USER_type').AsString;
frReport1.FindObject('Ma2').Memo.Text:=form2.ListClientInfo2.fieldbyname('USER_name').AsString;
frReport1.FindObject('Ma3').Memo.Text:=form2.ListClientInfo2.fieldbyname('USER_sex').AsString;
frReport1.FindObject('Ma4').Memo.Text:=form2.ListClientInfo2.fieldbyname('USER_age').AsString;
frReport1.FindObject('Ma5').Memo.Text:=form2.ListClientInfo2.fieldbyname('USER_tel').AsString;
frReport1.FindObject('Ma6').Memo.Text:=form2.ListClientInfo2.fieldbyname('USER_mobile').AsString;
frReport1.FindObject('Ma7').Memo.Text:=form2.ListClientInfo2.fieldbyname('USER_work').AsString;
frReport1.FindObject('Ma8').Memo.Text:=form2.ListClientInfo2.fieldbyname('USER_making').AsString;
frReport1.FindObject('Ma9').Memo.Text:=form2.ListClientInfo2.fieldbyname('USER_love').AsString;
end;
end;
是不是这个事件中不能再读取其他表中的数据啊,怎么我这样写它要在这里循环很多次啊(有多少条纪录它就要循环多少次)
我现在要达到这样的目的,先用frDBDataSet1关联一个query,另一个表是它的从表,我现在要做这样一个报表,显示主表中的数据,然后中间插入从“从表”中读取的隶属于它的数据,我搜索了一下大富翁和csdn,关于这样的帖子也不少,可是问题我还是没有解决,说我笨现在我也承认。
fastreport的说明文档我都看烂了也没弄好。
请知道的朋友给我写出可以运行的代码好吗?不要再让我看这个帖子,看哪个文档了,我现在最想的是快点解决这个问题。我真的要疯了。
以前我提过这样的问题,有的朋友回答的很让我不理解,最后觉得不好意思都结了帖子,可能是我表达的太模糊了,如果大家觉得我还没有说清楚我可以再解释,分不够可以再加。
如果大家告诉我怎样动态生成报表也可以,就是一个一个把memo写出来,一条记录一页,这样也行,只要达到目的就行了。先谢过大家了,做这个不是我的主要工作,我要快点解决掉这个问题,因为我还有其他工作要做。
var ParValue: Variant);
var ReportUserCode:string;
begin
ReportUserCode:=form2.ListClientInfo.fieldbyname('USER_code').AsVariant;
with form2.ListClientInfo2 do
begin
close;
sql.Text:='select * from ClientHuman where USER_code='+SqlCheckString(ReportUserCode)+' and USER_flag=0';
open;
frReport1.FindObject('Ma1').Memo.Text:=form2.ListClientInfo2.fieldbyname('USER_type').AsString;
frReport1.FindObject('Ma2').Memo.Text:=form2.ListClientInfo2.fieldbyname('USER_name').AsString;
frReport1.FindObject('Ma3').Memo.Text:=form2.ListClientInfo2.fieldbyname('USER_sex').AsString;
frReport1.FindObject('Ma4').Memo.Text:=form2.ListClientInfo2.fieldbyname('USER_age').AsString;
frReport1.FindObject('Ma5').Memo.Text:=form2.ListClientInfo2.fieldbyname('USER_tel').AsString;
frReport1.FindObject('Ma6').Memo.Text:=form2.ListClientInfo2.fieldbyname('USER_mobile').AsString;
frReport1.FindObject('Ma7').Memo.Text:=form2.ListClientInfo2.fieldbyname('USER_work').AsString;
frReport1.FindObject('Ma8').Memo.Text:=form2.ListClientInfo2.fieldbyname('USER_making').AsString;
frReport1.FindObject('Ma9').Memo.Text:=form2.ListClientInfo2.fieldbyname('USER_love').AsString;
end;
end;
是不是这个事件中不能再读取其他表中的数据啊,怎么我这样写它要在这里循环很多次啊(有多少条纪录它就要循环多少次)
我现在要达到这样的目的,先用frDBDataSet1关联一个query,另一个表是它的从表,我现在要做这样一个报表,显示主表中的数据,然后中间插入从“从表”中读取的隶属于它的数据,我搜索了一下大富翁和csdn,关于这样的帖子也不少,可是问题我还是没有解决,说我笨现在我也承认。
fastreport的说明文档我都看烂了也没弄好。
请知道的朋友给我写出可以运行的代码好吗?不要再让我看这个帖子,看哪个文档了,我现在最想的是快点解决这个问题。我真的要疯了。
以前我提过这样的问题,有的朋友回答的很让我不理解,最后觉得不好意思都结了帖子,可能是我表达的太模糊了,如果大家觉得我还没有说清楚我可以再解释,分不够可以再加。
如果大家告诉我怎样动态生成报表也可以,就是一个一个把memo写出来,一条记录一页,这样也行,只要达到目的就行了。先谢过大家了,做这个不是我的主要工作,我要快点解决掉这个问题,因为我还有其他工作要做。
可是我应该在哪个事件里写呢,判断什么呢。我现在就是搞不懂我应该在那里读取另一个表,我用关联ADOTable的masterfields值的方法很容易就可以解决,可是我现在要在建立报表的过程中计算第二个表中的数据后才让它显示的啊。求大侠帮帮忙好吗!!!我急了都想改改表的结构了,可是那样的话程序很多都要翻工,很不划算的。
在设计时一般是主项数据用来显示主表,细项数据显示明细表。注意细项数据要指定数据集。
另外,报表变量的设置其实不必在设计时搞定,可以动态添加。
AFrReport.Dictionary.Variables['VAR_PRINTDATE'] := ''''+sPrintdate+'''';
这条语句就加了一个Var_printdate变量同时赋值。
1、你加一个数据集TQuery。指向你的从表,并写一个刷新数据的函数。
sql.Text:='select * from ClientHuman where USER_code='''+form2.ListClientInfo.fieldbyname('USER_code').Asstring+'''';
2、加一个TFrDBDataset控件。指向上面的数据集。
3、在主表的Afterscroll事件中调用上面的刷新函数。
当然你可以控制只有当你打印时才执行明细数据的刷新。
再按照我上面一贴的内容设计你的报表就可以。
其实不用子报表,你的明细Band要指明数据集。另外,如果要打印多条主表记录的话,你还要
为主项数据指定数据集。多加一个TFrDBDataset控件指向主表数据集,在主项数据指定绑定数据集即可。