我用以下语句调用数据报表:
Set DataEnvironment1.rsCommand2.DataSource = DataEnvironment1.Connection1.Execute(select * from table1 where 学号 = id)
DataReport3.Show vbModal
数据报表中显示查询结果的所有记录,排一下版,没问题。
但问题是结果集中最后三个字段分别为学号1-3,记录的是3个其它相关同学的信息。需要把相关记录的字段(姓名,年龄等),显示在一起(同一数据报表中)。具体的,如果查询语句为“select * from table1 where 学号 = 5”
而结果集中有:
姓名 性别 年龄 ...... 学号1 学号2 学号3
小张 男 25 20 21 22
数据报表中,除了显示小张的信息外,还要显示,小张同寝室的三个同学21,22,23的姓名,年龄等信息。所以信息都在同一表中,table1。请各位大侠指点,如何实现?
Set DataEnvironment1.rsCommand2.DataSource = DataEnvironment1.Connection1.Execute(select * from table1 where 学号 = id)
DataReport3.Show vbModal
数据报表中显示查询结果的所有记录,排一下版,没问题。
但问题是结果集中最后三个字段分别为学号1-3,记录的是3个其它相关同学的信息。需要把相关记录的字段(姓名,年龄等),显示在一起(同一数据报表中)。具体的,如果查询语句为“select * from table1 where 学号 = 5”
而结果集中有:
姓名 性别 年龄 ...... 学号1 学号2 学号3
小张 男 25 20 21 22
数据报表中,除了显示小张的信息外,还要显示,小张同寝室的三个同学21,22,23的姓名,年龄等信息。所以信息都在同一表中,table1。请各位大侠指点,如何实现?
先记下 学号 = 5” 的 学号1 学号2 学号3 select * from table1 where 学号 in (学号1,学号2,学号3)
在程序设计是,在窗口模式下是可以实现的,但现在我要做打印,生成一个报表呀。
能帮帮忙吗,各位?这个问题困扰我一个多星期了。
再做第二次查询,将第二次查询的结果更新到tempTable中,打印时就打印tempTable的内容
言归正传,在本例中,关于tempTable表的建立1 字段的个数是Table1的四倍:
这样我可以依次放学号为,5,20,21,21共四个学生的信息,得到一条记录在给DataReport3。排版之后可得打印结果。但是,这么做似乎又太傻了?!2 字段的个数等于Table1
这样结果集中就会有四条记录。打印时,我对格式有要求,不是简单地列表。而在DataReport中,似乎无法对其进行排版。
wolfhero(小小), nfsxy(鲨鱼(已与联合国签订不吃人协议)) 你们做报表时是否也遇到过类似排版的问题。
对一条40个字段的记录进行排版似乎比对4条10个字段的结果集进行排版要容易些。其实,我个人最觉得郁闷的是,这并不是“程序设计思想”的问题啊。但是,做起东西来人家会因为这些而全盘否定你的设计。头大啊!
我没有明白你对报表的格式有什么特别的要求?如果你是想要查询一个学生,然后同时得到这个学生的室友信息,并打印出来,我认为是要安照你1的方法,字段个数为table1的四倍的。
另外,打印报表时建一个临时表从数据库中得到需要的数据,这算很烂的算法么?那么好的方法是什么?
我以前没做过报表,感觉应该不会是这样。现在明白了,也许“烂方法”一说的确没有根据,惭愧ing……
似乎现在问题解决了,大家都要我用方法一。
本着学习得精神,我想根大家讨论一下方法二。
我要得到得格式如下: 学生情况表 ’列出所有十个字段
学号:5 姓名:小张 性别:男
生日: 专业: 寝室号: 同寝室学员如下
学号 姓名 专业 生日 ’共五个字段得列表
20 小李
21 小王
22 小郭方法一:既然是一条40个记录得结果。把要用得10+5+5+5个记录找出来,20个RptTextBox,在DataField中找到相应字段。问题可以解决。方法二:四条10个记录得结果集。我只能在DataField中找到10个字段。(但愿不是我做错了)只能实现如下输出:学号 姓名 性别 生日 专业 寝室号
5 ’列表形式,具体略
20
21
22即,我无法区分出“主要的”学生(小张)和他寝室“相关的”学生(20,21,22),从而无法满足对格式的要求。我就算排版,也只能是控制行间距。nfsxy:
不知道我说清楚了没。按照这种要求,是不是只要方法一能行?能讨论一下方法二的实现吗?zifeng11:
是不是做报表都会这样,我觉得构麻烦的了。不是指select语句,而是做报表的过程。只是举的一个例子而已,我要做的是ISO文件,不让用手写。我不想让人家用完我的数据库后,还要重新在Excel里输入,排版,打印……有兴趣的话,大家继续讨论一下。
在线等待ing……
(新手上路,请多指教)
^_^