各位老大,小弟有一难题:
我现在在做vb生成pdf的报表,我用的是CrystalReport11,我已经实现了这样在:
比如:
表 table1中
id   c_name   c_address   orderno     itemno   s  xs  m  l xl   box   
1     lg1      ggggggg    cs-2005-08   c0001   2  3   4  6  8    1
2     lg1      ggggggg    cs-2005-08   c0002   4            4    1
3     lg1      ggggggg    cs-2005-08   c0003   2       3    4    1我用:
Dim Report As New Cry_PackingList
Dim SetRec As ADODB.Recordset
Dim SetSql As String
Dim SetStr As StringPrivate Sub Form_Load()
  SetSql = "select * from table1"
  Set SetRec = executesql(SetSql, SetStr)
  Report.DiscardSavedData
  Report.Database.SetDataSource SetRec, 3, 1
  Screen.MousePointer = vbHourglass
  CR_PackList.ReportSource = Report
  CR_PackList.ViewReport
  Screen.MousePointer = vbDefault
 SetRec.Close
 Set SetRec = Nothing
End Sub 实现了:
                            报表1
客人名: lg1                                             编号:cs-2005-08   
地址:   ggggggg  
  
款式:c0001   
数量:  s  xs  m  l xl   
      2  3   4  6  8    
款式:c0002   
数量:  s  xs  m  l xl   
      4            4   
款式:c0003   
数量:  s  xs  m  l xl   
      2       3    4 
                                                        第 1 箱其中 客人名,地址,编号  是表头,其他的是内容,可以多页.我的问题是,假如我的table1表里面有多个箱,我想把他们一下子都导入到水晶报表里来,不同箱的表头要不一样,像这样:
表 table1中
id   c_name   c_address   orderno     itemno   s  xs  m  l xl   box   
1     lg1      ggggggg    cs-2005-08   c0001   2  3   4  6  8    1
2     lg1      ggggggg    cs-2005-08   c0002   4            4    1
3     lg1      ggggggg    cs-2005-08   c0003   2       3    4    14     guang    qqqqq    cs-2008-08     r0001           3    4    2
4     guang    qqqqq    cs-2008-08     r0002                4    2结果:                                 报表2
客人名: lg1                                             编号:cs-2005-08   
地址:   ggggggg  
  
款式:c0001   
数量:  s  xs  m  l xl   
      2  3   4  6  8    
款式:c0002   
数量:  s  xs  m  l xl   
      4            4   
款式:c0003   
数量:  s  xs  m  l xl   
      2       3    4 
                                                        第 1 箱
客人名: guang                                             编号:cs-2008-08   
地址:   qqqqq
  
款式:r0001   
数量:  s  xs  m  l xl   
              3    4    
款式:r0002   
数量:  s  xs  m  l xl   
                   4   
                                                        第2 箱不知道大家明白没有,请大家看看,谢谢!!

解决方案 »

  1.   

    另外设计报表,报表格式同你想要的PDF格式,你这个问题是设计报表的问题,不是如何导出到PDF的问题
      

  2.   

    tongnaifu:你好
    请问 你能告诉我该怎样设计吗
    我的实现结果如上,谢谢你
      

  3.   

    tongnaifu:你好 
    还要麻烦你,请问,要是用子报表的话,是表头和下面的要分开吗
    还是有其他的用?,还请你多多指教,尽量详细点,谢谢你
      

  4.   

    小弟实在很笨,能不能给一些代码提示
    比如,在
    Private Sub Form_Load() 
      SetSql = "select * from table1" 
      Set SetRec = executesql(SetSql, SetStr) 
      Report.DiscardSavedData 
      Report.Database.SetDataSource SetRec, 3, 1 
      Screen.MousePointer = vbHourglass 
      CR_PackList.ReportSource = Report 
      CR_PackList.ViewReport 
      Screen.MousePointer = vbDefault 
    SetRec.Close 
    Set SetRec = Nothing 
    End Sub 基础上我该怎么修改,,我会马上揭贴,谢谢!!
      

  5.   

    tongnaifu ,你好,感谢你给我提供很好的思路,这个还可以,只是有一点不能满足,就是当表头的 编号改变后,下面的明细不能跟着换页,也就是说不同编号的明细不能在同一页,我怎么控制强制换页,最后一点了,还请你帮忙,谢谢你!!!
      

  6.   

    tongnaifu:你好,在你的耐心指导下,我基本上搞定了,不过还有最后一个小问题就是:
    在  “公式工作室”里,我用了 “在以下内容前新建页”,其中有个条件就是
    {out_pdf.OrderNo}<>"某一个编号",这里恰恰是他本身,我就用:
    {out_pdf.OrderNo}<>{out_pdf.OrderNo}
    结果不行,不知道该怎么表达,谢谢你!!马上揭贴,给分与你!
    还有,我这个问题我发了两次,你找一下,你在那里随便写一些东西,我把那里的分也结给你,谢谢!!
      

  7.   

    {out_pdf.OrderNo} <>""行不行?
      

  8.   

    tongnaifu:你好,不行的,要是 {out_pdf.OrderNo} <>"" 的话,每一行都换新建页!
      

  9.   

    把你的报表发给我,[email protected]
      

  10.   

    芙哥,我有个思路:
    就是
     string orderno
     orderno={out_pdf.OrderNo}
     {out_pdf.OrderNo}<>orderno怎么样,不知道怎样把他转化为公式
    你看看!