我有这样的报表,VB6.0+水晶报表,报表提供给用户一个参数,只要用户输入该参数相对应的值,就返回数据库查询的记录.水晶报表的数据源是储存过程,在储存过程里面就有一个参数.
我现在想实现的是,设计一个VB界面,提供用户一个选择,不用用户自己输入该参数的值,而是在下拉列表里读取了数据库的数据.只要用户选择了某个值,水晶报表就显示改值返回的记录.

解决方案 »

  1.   

    用Formulas属性,代码例子如下:
    'customer,datetime 是报表上的text
    With FrmSysMain.Rptmain
          .ReportFileName = gsReportPath + "xsd.rpt"
          .Formulas(0) = "customer='" & Trim(ofrm.txt(1)) & "(" & Trim(ofrm.txt(0)) 
         .Formulas(1) = "datetime='" & ofrm.msDatetime & "'"              
          .action=1
    end with
      

  2.   

    先设计好报表中要显示的字段,然后下拉框选中后执行相应的sql语句,并把结果存入recordset,最后把报表的数据源绑定为recordset
      

  3.   

    Option Explicit
    Dim Report As New CrystalReport1Private Sub Form_Load()
    Set rsGDBE2 = New ADODB.Recordset
    rsGDBE2.Open "select * from qnhead where QN_NO='" & Form1.DataCombo1.Text & "'", cnGDBE, adOpenKeyset, adLockPessimistic
    If Not rsGDBE2.EOF Then
        Report.Database.SetDataSource rsGDBE2
    End IfScreen.MousePointer = vbHourglass
    CRViewer91.ReportSource = Report
    CRViewer91.ViewReport
    Screen.MousePointer = vbDefault
    End Sub
    ----------------------//
    这是我在VB窗体FORM2里面的加载代码,但是老是报错,"实时错误:'9',下标越界"
      

  4.   

    补充:调试错误在  Report.Database.SetDataSource rsGDBE2 这一行上,
      

  5.   

    参考:http://blog.csdn.net/myhgyp/archive/2005/01/13/252260.aspx
      

  6.   

    还是没能解决问题啊,为什么我重新设置报表数据源的时候,重新编译,当第二次再次编译的时候,就出现程序死掉那样,完全没有没有反映。
    在程序的登陆窗体里面也是用到rsGDBE,我用完之后就把它set rsGDBE=nothing了,还是出现程序死掉的现象
      

  7.   

    试试我下面的,应该没问题了
    dim report as new crystalreport1private sub form_load()
    set report=nothing
    report.database.setdatasource rs
    crviewer1.reportsource=report
    crviewer1.viewreport1
    end sub其中rs为你所取得的数据源.