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
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()
Ora però ho la necssità di passare dei parametri che non sono contenuti in una tabella.
Per passare dei parametri ho visto che dovrebbe semplicemente bastare questo codice:
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
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)
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