fastreport字段调用问题,很急,解决即揭贴!(200分)

  • 主题发起人 主题发起人 rainbow0326
  • 开始时间 开始时间
R

rainbow0326

Unregistered / Unconfirmed
GUEST, unregistred user!
数据库有这样一个表,字段及数据如下:
a(工号) b1(备存1) b2(备存2) b3(备存3)
x10 x20 x21 x22
x11 x30
x12
x13 x41 x42
就是说数据中b1-b3可以为空,现在我要用fastreport做报表,要求实现一下功能:
工号 备存
x10 x20
x21
x22
x11 x30
x12
x13 x41
x42
怎么实现这种形式呢,就是说怎么能让备存不定量的跳出来,有几个跳几个,如果没有用到备存就什么都不跳,这个问题我想了好就都没有实现,各位大虾一定帮帮小妹啊,主管看着我呢,做不出来我死定了。求求大虾们了。谢谢!
 
建议你再创建一个新表,该表的结构及内容就是你想要的格式。
在打印之前,把你的数据放入到这个表里。
这样容易实现,并且操作起来也简单,用两个循环(for a, for b)就可以建立这个表,
而且这样在做报表时,很容易就把数据库的内容给关联上。
 
这是FR的经典问题之一,不好解决。
 
动态生成临时表,用FR打印
 
为了不想占用磁盘空间用 TMemoryTable之类的东东啦,
实在不想这样呀:
用TXQuery添加 TDataSet后进行查询,绝对搞定。
呵呵~~~~~~~~~~~~~
 
大虾们说的详细一点好不好啊,我很菜,你的言简意赅的回答解决不了我的困难啊,先谢过了
我也想过动态临时表,但是我不知道这个临时表怎么建,我用数据库的查询分析器把查询结果放到临时表里,但是只能执行一次啊,在执行的时候就会出错提示已经有了这个动态表名了,我不知道如果把这个查询语句放到delphi中会不会出现同样的错误
 
我很菜,只能用很菜的方法:
先建一临时表:
字段名为:工号,备注,排序号,用户名
把表中的数据按a(工号)排序查询出来,插入到临时表中,再做到报表中去。
备注:如做成动态临时表,当多人同时做这个报表时,会提示此临时表已存在等错误。
所以我做了一个静态临时表,建一存储过程,用于把数据从原表中插入到临时表中。
排序号是用于报表中打印时排序。
用户名是用于多个用户操作时,不互相影响。
在做报表时,把本用户的数据先删除,再重新在临时表中生成数据(因原表中的数据是动态改变的)。
如果有更好的方法,我想请rainbow0326告诉我,因为我很菜。E-mail:szhjinf@163.com
 
你在建立该临时表时,先判断一下是否已经存在,如果存在就将该表删除,然后再创建,
这样就不会出现该表已经存在的错误了。
如果不想删除该表,用建立静态表的方法,则是在每次操作时,把静态临时表中的数据更新一下。
我觉得建立临时表可以这样(表结构你总会吧,下面的代码是如何填数据):
假设的你两个表为A、B
procedure ****
var
i:integer;
FieldList:TStringList;
begin
……………………
FieldList:=TStringList.Create;
with ado
begin
GetFieldNames(FieldList);

FieldList.Delete(FieldList.IndexOf('工号'));//去掉工号,留下备存
first;
while not eofdo
//循环整个表
begin
for i:=0 to FieldList.Count-1do
//循环所有备存
begin
if not (trim(fieldbyname(FieldList))='') then
//如果备存不为空,就填入
begin
b.FieldbyName('工号').AsString:=a.FieldbyName('工号').AsString;
b.FieldbyName('备存').AsString:=a.FieldbyName(FieldList).AsString;
end;
end;
next;
end;
end;
end;
 
晕车!!!!!
我都说得很清楚啦,
用TXQuery是很不错的哦,
注意在窗体上加三个 TXXXQuery控件进行查询就是啦,
呵呵~~~~~~~~~~~~~~~~~~~~~~~~~~
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部