2012-03-28 11 views
0

Ich versuche, einen Bericht mit Crystal Studio zu erstellen, der eine öffentliche Variable aus der vb.net-Anwendung verwendet. Ich denke, der beste Weg ist, den Filter zur Laufzeit dynamisch dem Bericht zu übergeben, aber ich kann nicht herausfinden, wie ich ihn einrichten soll, um zur Laufzeit irgendwelche Informationen aufzunehmen. Irgendein Rat?Dynamischer Crystal Reports-Bericht mit VS2010 Vb.net

Antwort

0

Der beste Weg besteht darin, Ihren Bericht mit einem Parameter zu erstellen, der in den Datensatzauswahlkriterien verwendet wird. Sie können dann den Bericht laden, und füllen Sie den Parameter wie:

Imports CrystalDecisions.CrystalReports.Engine 
Imports CrystalDecisions.Shared 
Public Class Form1 
Private Sub Button1_Click(ByVal sender As System.Object, _ 
ByVal e As System.EventArgs) Handles Button1.Click 

    Dim cryRpt As New ReportDocument 
    cryRpt.Load("PUT CRYSTAL REPORT PATH HERE\CrystalReport1.rpt") 

    Dim crParameterFieldDefinitions As ParameterFieldDefinitions 
    Dim crParameterFieldDefinition As ParameterFieldDefinition 
    Dim crParameterValues As New ParameterValues 
    Dim crParameterDiscreteValue As New ParameterDiscreteValue 

    crParameterDiscreteValue.Value = TextBox1.Text 
    crParameterFieldDefinitions = - 
     cryRpt.DataDefinition.ParameterFields 
    crParameterFieldDefinition = _ 
     crParameterFieldDefinitions.Item("Customername") 
    crParameterValues = crParameterFieldDefinition.CurrentValues 

    crParameterValues.Clear() 
    crParameterValues.Add(crParameterDiscreteValue) 
    crParameterFieldDefinition.ApplyCurrentValues(crParameterValues) 

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

-Code ab: http://vb.net-informations.com/crystal-report/vb.net_crystal_report_parameter_string.htm End Class

0
string query = "select * from TestReport"; 

sqlconn.Open(); 

da = new SqlDataAdapter(query, sqlconn); 

SqlCommandBuilder scb = new SqlCommandBuilder(da); 

da.Fill(DS.TestReport);//DS is a DataSet object . 

myCrystalReport1.SetDataSource(DS); 


//----------------- 

ParameterField paramfield = new ParameterField(); 

ParameterFields paramfields = new ParameterFields(); 

ParameterDiscreteValue discreteval = new ParameterDiscreteValue(); 


paramfield.Name = "myfirstname"; 

discreteval.Value = "10"; 


paramfield.CurrentValues.Add(discreteval); 

paramfields.Add(paramfield); 

crystalReportViewer1.ParameterFieldInfo = paramfields; 

//----------------- 

crystalReportViewer1.ReportSource = myCrystalReport1; 


crystalReportViewer1.Refresh(); 

sqlconn.Close();