Ok! Dopo innumerevoli tentativi, credo di essere entrato nella strada giusta!
Sono riuscito a filtrare i risultati che ottengo nel Report inviando una stringa SQL in questo modo:
Prima bisogna creare un DataSet con le colonne che vogliamo inserire
Ora però ho la necssità di passare dei parametri che non sono contenuti in una tabella.codice:Dim ds As New DataSet1 Dim cnn As SqlConnection Dim connectionString As String Dim sql As String connectionString = "connString" cnn = New SqlConnection(connectionString) cnn.Open() sql = "SELECT Product_id,Product_name,Product_price FROM Product" Dim dscmd As New SqlDataAdapter(sql, cnn) dscmd.Fill(ds, "Product") MsgBox(ds.Tables(1).Rows.Count) cnn.Close() Dim objRpt As New CrystalReport1 objRpt.SetDataSource(ds.Tables(1)) CrystalReportViewer1.ReportSource = objRpt CrystalReportViewer1.Refresh()
Per passare dei parametri ho visto che dovrebbe semplicemente bastare questo codice:
Il problema, come si vede chiaramente, è che nel primo esempio passo l'oggetto objRpt (che è un CrystalReport1), mentre nel secondo passo cryRpt (che è un ReportDocument)codice:Dim cryRpt As New ReportDocument cryRpt.Load("PERCORSO\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
Ho provato ad aggiungere il secondo pezzo di codice sostituendo cryRpt con objRpt e non ho avuto errori, ma non passa niente
Forse sono cose banali, ma non riesco ad uscirne

Rispondi quotando