2010-09-02 60 views
0

上次我用两个参数查询&查看报表。它运作良好。现在我试图用另一个额外的参数使用相同的代码,但它不工作。我很困惑。让我告诉你我的代码。其运作良好水晶报表查询由三个参数查看报表

代码:

参数字段:bdate和EDATE

Crystal报表公式:{Bal_sheet.bsdate}> = {bdate?}和{Bal_sheet.bsdate} < = {? EDATE}

代码来显示报告:

Private Sub butsbalsrep_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butsbalsrep.Click 
    Dim cryRpt As New ReportDocument 
    cryRpt.Load(Application.StartupPath & "\CrystalReport3.rpt") 

    Dim crParameterFieldDefinitions As ParameterFieldDefinitions 
    Dim crParameterFieldDefinition As ParameterFieldDefinition 

    Dim crParameterFieldDefinitions1 As ParameterFieldDefinitions 
    Dim crParameterFieldDefinition1 As ParameterFieldDefinition 


    Dim crParameterValues As New ParameterValues 
    Dim crParameterValues1 As New ParameterValues 

    Dim crParameterDiscreteValue As New ParameterDiscreteValue 
    Dim crParameterDiscreteValue1 As New ParameterDiscreteValue 

    crParameterDiscreteValue.Value = cmbbdate.Text 
    crParameterDiscreteValue1.Value = cmbedate.Text 

    crParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields 
    crParameterFieldDefinition = crParameterFieldDefinitions.Item("bdate") 

    crParameterFieldDefinitions1 = cryRpt.DataDefinition.ParameterFields 
    crParameterFieldDefinition1 = crParameterFieldDefinitions.Item("edate") 

    crParameterValues = crParameterFieldDefinition.CurrentValues 
    crParameterValues1 = crParameterFieldDefinition1.CurrentValues 

    crParameterValues.Clear() 
    crParameterValues1.Clear() 

    crParameterValues.Add(crParameterDiscreteValue) 
    crParameterValues1.Add(crParameterDiscreteValue1) 

    crParameterFieldDefinition.ApplyCurrentValues(crParameterValues) 
    crParameterFieldDefinition1.ApplyCurrentValues(crParameterValues1) 


    crysrepbalsht.ReportSource = cryRpt 
    crysrepbalsht.Refresh() 
End Sub 

代码WHI CH不工作:

参数字段:idnmb和acyer和etyp

Crystal报表公式:{?idnmb} {?acyer} {res_info.stu_id} =和{res_info.yr} =和{res_info .etype} = {} etyp

代码来显示报告:

Private Sub butsrrepsr_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butsrrepsr.Click 
    Dim cryRpt As New ReportDocument 
    cryRpt.Load(Application.StartupPath & "\CrystalReport3.rpt") 

    Dim crParameterFieldDefinitions As ParameterFieldDefinitions 
    Dim crParameterFieldDefinition As ParameterFieldDefinition 

    Dim crParameterFieldDefinitions1 As ParameterFieldDefinitions 
    Dim crParameterFieldDefinition1 As ParameterFieldDefinition 

    Dim crParameterFieldDefinitions2 As ParameterFieldDefinitions 
    Dim crParameterFieldDefinition2 As ParameterFieldDefinition 

    Dim crParameterValues As New ParameterValues 
    Dim crParameterValues1 As New ParameterValues 
    Dim crParameterValues2 As New ParameterValues 

    Dim crParameterDiscreteValue As New ParameterDiscreteValue 
    Dim crParameterDiscreteValue1 As New ParameterDiscreteValue 
    Dim crParameterDiscreteValue2 As New ParameterDiscreteValue 

    crParameterDiscreteValue.Value = cmbsrrepidn.Text 
    crParameterDiscreteValue1.Value = cmbsrrepay.Text 
    crParameterDiscreteValue2.Value = cmbsrrepet.Text 

    crParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields 
    crParameterFieldDefinition = crParameterFieldDefinitions.Item("idnmb") 

    crParameterFieldDefinitions1 = cryRpt.DataDefinition.ParameterFields 
    crParameterFieldDefinition1 = crParameterFieldDefinitions.Item("acyer") 

    crParameterFieldDefinitions2 = cryRpt.DataDefinition.ParameterFields 
    crParameterFieldDefinition2 = crParameterFieldDefinitions.Item("etyp") 

    crParameterValues = crParameterFieldDefinition.CurrentValues 
    crParameterValues1 = crParameterFieldDefinition1.CurrentValues 
    crParameterValues2 = crParameterFieldDefinition2.CurrentValues 

    crParameterValues.Clear() 
    crParameterValues1.Clear() 
    crParameterValues2.Clear() 

    crParameterValues.Add(crParameterDiscreteValue) 
    crParameterValues1.Add(crParameterDiscreteValue1) 
    crParameterValues2.Add(crParameterDiscreteValue2) 

    crParameterFieldDefinition.ApplyCurrentValues(crParameterValues) 
    crParameterFieldDefinition1.ApplyCurrentValues(crParameterValues1) 
    crParameterFieldDefinition2.ApplyCurrentValues(crParameterValues2) 

    CrystalReportViewer3.ReportSource = cryRpt 
    CrystalReportViewer3.Refresh() 

End Sub 

我很困惑,为什么它不工作!当我点击显示报告按钮时,它什么也没有显示(我没有收到错误信息,也没有找到记录)。我在公式工作室记录选择公式编辑器中编写了{res_info.stu_id} = {?idnmb}和{res_info.yr} = {?acyer}和{res_info.etype} = {?etyp}。请帮我摆脱这个问题!

+0

定义“不工作”;你没有收回记录,一组意外的记录,一个错误?您是否在Crystal Report中设置了公式{res_info.stu_id} = {?idnmb}和{res_info.yr} = {?acyer}和{res_info.etype} = {?etyp}'? – LittleBobbyTables 2010-09-02 11:22:41

回答

0

是的,你是对的LittleBobbyTables。当我点击显示报告按钮时,它什么也没有显示(我没有收到错误消息,但没有收到记录。)是的,我写了{res_info.stu_id} = {?idnmb}和{res_info.yr} = {?acyer}和{ res_info.etype} = {?etyp}它在公式车间记录选择公式编辑器

+1

詹姆斯,你有没有试过修改你的报告公式,以便它只保存一次的条件之一,然后运行它?如果其中一个条件出现故障,这应该有助于您找到它;相反,如果所有单条件运行都返回数据,则可能仅仅是数据源中没有数据同时满足所有条件。 – 2010-09-03 10:19:43