我用以下语句调用数据报表:
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。请各位大侠指点,如何实现?

解决方案 »

  1.   

    在做一次查询吧 
    先记下 学号 = 5” 的 学号1  学号2  学号3 select * from table1 where 学号  in  (学号1,学号2,学号3)
      

  2.   

    我也知道可能还要一次查询,但是查询的结果如何调用到DataReprot中呢。
    在程序设计是,在窗口模式下是可以实现的,但现在我要做打印,生成一个报表呀。
    能帮帮忙吗,各位?这个问题困扰我一个多星期了。
      

  3.   

    先建一个临时表tempTable,把第一次查询的结果放到tempTable
    再做第二次查询,将第二次查询的结果更新到tempTable中,打印时就打印tempTable的内容
      

  4.   

    真的需要这样吗?写起程序来是不是只要能实现,再烂的算法都要用?
    言归正传,在本例中,关于tempTable表的建立1  字段的个数是Table1的四倍:
    这样我可以依次放学号为,5,20,21,21共四个学生的信息,得到一条记录在给DataReport3。排版之后可得打印结果。但是,这么做似乎又太傻了?!2  字段的个数等于Table1
    这样结果集中就会有四条记录。打印时,我对格式有要求,不是简单地列表。而在DataReport中,似乎无法对其进行排版。
    wolfhero(小小), nfsxy(鲨鱼(已与联合国签订不吃人协议)) 你们做报表时是否也遇到过类似排版的问题。
    对一条40个字段的记录进行排版似乎比对4条10个字段的结果集进行排版要容易些。其实,我个人最觉得郁闷的是,这并不是“程序设计思想”的问题啊。但是,做起东西来人家会因为这些而全盘否定你的设计。头大啊!
      

  5.   

    楼主:
    我没有明白你对报表的格式有什么特别的要求?如果你是想要查询一个学生,然后同时得到这个学生的室友信息,并打印出来,我认为是要安照你1的方法,字段个数为table1的四倍的。
    另外,打印报表时建一个临时表从数据库中得到需要的数据,这算很烂的算法么?那么好的方法是什么?
      

  6.   

    我觉得用ADO和DATAREPORT做报表还不算麻烦,只是得多用几次SELEC生成另三个报表后,再用 SELECT 从这四个表中提取生成一个ADO记录集,这个记录集只选取你要进行报表的字段就可以了,这样打印的格式就可以随意的设计了。
      

  7.   

    nfsxy:
    我以前没做过报表,感觉应该不会是这样。现在明白了,也许“烂方法”一说的确没有根据,惭愧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……
    (新手上路,请多指教)
    ^_^