2015-06-25 24 views
5

Ho un report di cristallo che funziona correttamente quando uso DSN come origine dati. Il problema è che sto usando il set di dati ora. Il set di dati contiene tutta la tabella di cui ho bisogno e lo sto compilando con i dati del database utilizzando la procedura memorizzata. Ma, in questo modo, viene generato un errore: "Missing Parameters".Non è possibile associare correttamente il report Crystal quando si utilizza il set di dati, mostrando i parametri mancanti

che sto facendo, come di seguito:
Fase 1: Creazione Dataset1.xsd e con l'inserimento di tutti i necessari data connectionstables dal database in esso.
Fase 2: Dare data source per segnalare utilizzando database expert come Dataset1.xsd
Fase 3: Inserimento dei dati utilizzando stored procedure nel set di dati e quindi la creazione di un'istanza di Dataset1 e la fusione dei dati provenienti da set di dati da Dataset 1 esempio.

Il mio codice per recuperare i dati dal database e quindi unire che per Dataset1 istanza e dare che come sorgente di rapporto di cristallo è il seguente:

Private Sub ReportByDataset(ByVal rptDoc As CrystalDecisions.CrystalReports.Engine.ReportDocument) 

    'new code 

    Dim myConnection As New SqlClient.SqlConnection() 
    'myConnection.ConnectionString = "server= (local)\NetSDK;database=pubs;Trusted_Connection=yes" 
    Dim ds As New DataSet1 

    myConnection.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings("HighriseContractingWebConnectionString").ConnectionString 
    myConnection.Open() 
    Dim MyCommand As New SqlClient.SqlCommand() 
    MyCommand.Connection = myConnection 

    MyCommand.CommandText = "SP_Web_GetReportTables" 
    MyCommand.CommandType = CommandType.StoredProcedure 
    Dim MyDA As New SqlClient.SqlDataAdapter() 
    MyDA.SelectCommand = MyCommand 
    Dim myDS As New DataSet 

    MyDA.Fill(myDS) 
    myConnection.Close() 


    ds.Tables("RABill_RPT").Merge(myDS.Tables(0), MissingSchemaAction.Ignore) 
    myDS.Tables(0).Reset() 
    ds.Tables("RA_bills").Merge(myDS.Tables(1), MissingSchemaAction.Ignore) 
    ds.Tables("Work_Completion").Merge(myDS.Tables(2), MissingSchemaAction.Ignore) 
    ds.Tables("contractor").Merge(myDS.Tables(3), MissingSchemaAction.Ignore) 
    ds.Tables("WO_Header").Merge(myDS.Tables(4), MissingSchemaAction.Ignore) 
    ds.Tables("Project").Merge(myDS.Tables(5), MissingSchemaAction.Ignore) 
    ds.Tables("contractor_1").Merge(myDS.Tables(6), MissingSchemaAction.Ignore) 
    ds.Tables("Users").Merge(myDS.Tables(7), MissingSchemaAction.Ignore) 
    ds.Tables("Users_Approved").Merge(myDS.Tables(8), MissingSchemaAction.Ignore) 
    ds.Tables("voucher").Merge(myDS.Tables(9), MissingSchemaAction.Ignore) 
    ds.Tables("Employee_Approve").Merge(myDS.Tables(10), MissingSchemaAction.Ignore) 
    ds.Tables("Employee").Merge(myDS.Tables(11), MissingSchemaAction.Ignore) 
    ds.Tables("Account").Merge(myDS.Tables(12), MissingSchemaAction.Ignore) 
    ds.Tables("TDS").Merge(myDS.Tables(13), MissingSchemaAction.Ignore) 
    ds.Tables("WO_Detail").Merge(myDS.Tables(14), MissingSchemaAction.Ignore) 
    ds.Tables("V_WO_BlockTaskNo").Merge(myDS.Tables(15), MissingSchemaAction.Ignore) 
    ds.Tables("TASK").Merge(myDS.Tables(16), MissingSchemaAction.Ignore) 
    ds.Tables("Cont_Voucher").Merge(myDS.Tables(17), MissingSchemaAction.Ignore) 
    ds.Tables("Cont_Voucher_1").Merge(myDS.Tables(17), MissingSchemaAction.Ignore) 
    ds.Tables("Cont_Voucher_2").Merge(myDS.Tables(17), MissingSchemaAction.Ignore) 
    ds.Tables("Company").Merge(myDS.Tables(18), MissingSchemaAction.Ignore) 


    ''new code ends 


    rptDoc.SetDataSource(ds) 
    CRReport.HasCrystalLogo = False 
    CRReport.HasToggleGroupTreeButton = False 
    CRReport.ReportSource = rptDoc 
    CRReport.DataBind() 

End Sub 

Ma non funziona, quello che mi manca. Lo stesso funziona bene usando DSN Non è un problema di parametri e lo stesso funziona bene in altro modo.
Nota: Lo so sopra codice non è ottimizzata della memoria, ma la mia preoccupazione per ora è quello di rendere in qualche modo funzionare, posso poi ottimizzarlo

seguito immagine mostra Dataset1 come origine dati
enter image description here

+0

Ur manca i tuoi genitori suppongo :) – killer

+0

Cosa !! Non ti capisco. – user1923238

+0

questa domanda è il nostro compito di casa? – killer

risposta

0

Two possibilità - dove stai ottenendo i parametri mancanti errore generato? Se si trova nella procedura memorizzata SP_Web_GetReportTables, non si aggiungono parametri per tale sproc su MyCommand. Se si trova nel report stesso, controllare sotto Field Explorer sul lato del report stesso e vedere se ci sono dei parametri definiti lì, che sono stati lasciati dall'uso del DSN. Poiché ora si passa direttamente a un set di dati, non è necessario passare alcun parametro. Infine, se si utilizza Crystal Report Viewer, è sufficiente impostare ReportSource per visualizzarlo, non sono sicuro di cosa sta facendo DataBind per tu.

0

Se si crea una nuova origine dati e si elimina quella precedente, CR eliminerà i parametri relativi ai parametri di query anche per tale origine dati. È meglio cambiare la fonte dei dati.

Problemi correlati