+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 10 su 10

Discussione: [VS 2010] Crystal report Errore: Could not load file or assembly

  1. #1
    cris77 non è in linea Scolaretto
    Post
    127

    [VS 2010] Crystal report Errore: Could not load file or assembly

    Ciao a tutti,


    Ho creato un'applicazione Windows form in Visual Studio 2010 dove ho inserito una textbox in cui scrivo un numero ad esempio 1 e in un 'altra texbox ho messo un numero (che indica la quantita) ad esempio 5 poi ho inserito il controllo Crystal Report Viewer e creato un report dove inserisco nei dettagli (del report) un campo di parametro chiamato numero. Il report non è collegato a nessun database e il risultato che vorrei ottenere nel report è questo:

    SEZIONE DETTAGLI

    numero
    1
    2
    3
    4
    5

    tralasciado il codice visual basic come faccio a settare nel report in modo che il mio campo parametro visualizzi dei records ? Ho provato a modicaficare la formattazione del campo ma non ho risolto nulla.... Mi chiedo se si possa fare.... con il campo formula collegato del report collegato ad un database non ho problemi mentre nel caso campi parametri senza connessione ad un database non so che pesci pigliare.
    Grazie dell' attenzione...
    Ultima modifica di elisab; 19-10-2011 00:44 

  2. #2
    Luogo
    Padova
    Post
    4,379
    Blogs
    36
    puoi mettere un dataset "scritto a mano" e popolarlo come meglio ti pare ed usare questo come base per crystal report.
    ----------------------------------------------------------
    Se avete delle domande fatele prima al forum
    Il mio blog su Masterdrive.it
    Il mio blog su Visual-Basic.it

  3. #3
    cris77 non è in linea Scolaretto
    Post
    127
    grazie del consiglio Cteniza ti posto il mio codice così magari vedi che consiglio darmi; non ho capito bene cosa intendi per "popolare a mano" il datatset e "usarlo come base" per il report

    Riepilogo il tutto

    Su il form inserisco Textbox3 ( dove scrivo il mio numero) nella texbox4 (indica la quantità)

    nel report (usando Crystal report) inserisco un campo di parametro nella sezione dettagli
    Nel form di VB inserisco il controllo Crystal report viewer e un bottone Button4

    codice:
    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
            Dim i As Integer
            Dim cryRpt As New ReportDocument
            cryRpt.Load("C:\Users\admin\Documents\Visual Studio 2010\Projects\UTILITY\UTILITY\CrystalReport1.rpt")
    
            Dim crParameterFieldDefinitions As ParameterFieldDefinitions
            Dim crParameterFieldDefinition As ParameterFieldDefinition
            Dim crParameterValues As New ParameterValues
            Dim crParameterDiscreteValue As New ParameterDiscreteValue
    
            Dim ds As New DataSet
            Dim dt As DataTable
            Dim dr As DataRow
    
            Dim nameCoulumn As DataColumn
    
    
    
            dt = New DataTable()
    
            nameCoulumn = New DataColumn("Name", Type.GetType("System.String"))
    
    
            dt.Columns.Add(nameCoulumn)
    
            
    
    
         
            crParameterDiscreteValue.Value = TextBox3.Text
            crParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields
            crParameterFieldDefinition = crParameterFieldDefinitions.Item("numero")
            crParameterValues = crParameterFieldDefinition.CurrentValues
    
            crParameterValues.Clear()
            'crParameterFieldDefinition.EnableAllowMultipleValue = False
    
    
            For i = 1 To CInt(TextBox4.Text)
                crParameterValues.Add(crParameterDiscreteValue)
                crParameterFieldDefinition.ApplyCurrentValues(crParameterValues)
                dr = dt.NewRow()
    
                dr("Name") = crParameterValues
                dt.Rows.Add(dr)
    
            Next
            ds.Tables.Add(dt)
    
     ' ecco qui ho il problema di come passare i valori che ho popolato nel dataset nel campo parametro di crystal report
    
            
    
    
            CrystalReportViewer1.ReportSource = cryRpt
            CrystalReportViewer1.Refresh()
    
    
    
    
        End Sub
    Ultima modifica di elisab; 13-10-2011 23:41  Motivo: mancato utilizzo dei tag [code][/code]

  4. #4
    L'avatar di elisab
    elisab non è in linea Very Important Person
    Post
    1,750
    Cris77 per postare il codice devi usare gli appositi tag di formattazione [CODE][/CODE] che fanno in modo che il codice mantenga l'indentazione e sia più leggibile, non sei nuovo dovresti saperlo. Qui un esempio di uso del tag.


    Edit guarda questo articolo, non è recentissimo ma penso che sia ancora valido.
    Ultima modifica di elisab; 13-10-2011 23:58 
    Il Crossposting è vietato dalla Netiquette.

    Tutti gli utenti sono invitatati ad indicare nel titolo la versione di VB, Visual Studio o il Framework di compilazione.

    NB: In presenza del SyntaxHighlighter (codice colorato con numeri di riga a lato) prima di copiare il codice eseguire doppio click sulla finestra di codice, altrimenti mancheranno tutti i ritorno a capo.

  5. #5
    cris77 non è in linea Scolaretto
    Post
    127
    oops scusa hai ragione elisab!

    L'ho fatto senza rendermene conto

    Scusate ancora e grazie della dritta ora gli do un okkio

  6. #6
    cris77 non è in linea Scolaretto
    Post
    127
    Seguendo l'indicazione Cteniza ho fatto in questo modo:

    - Nella Windows Form barra del menù - Progetto - Inserisci nuovo componente - Dataset - e viene creato il componente Dataset1
    - aggiungo al Dataset1 una Datatable - mi crea Datatable1 - tasto destro sul Datatable e aggiungo un colonna chiamandola "numero"
    - Sempre sulla barra del menù Windows Form - Inserisci nuovo componente - Crystal Report - viene creato CrystalReport1
    - Vado sulla Barra Explorer Campo che si trova sulla sinistra del Report - Seleziono Campi Database - tasto destro - Esperto database - Dati del progetto - Datasets - ADO.NET - WindowsApplicationsDataSet1 - DataTable1- selezione e sposto con la freccia > nella casella Tabelle Selezionate - Vado su OK e sotto la foce Campi Database avrò il campo "numero" ( che corrisponde al Dataset creato prima) .
    - Il campo database ("numero") lo inserisco nella Sezione Dettagli del mio report.
    A questo punto devo andare nella mia Windows Form - Creo un Button - aggiungo il controllo CrystalReportviewer1

    Evento Click del Button1:


    codice:
         Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
           
            Dim cryRpt As New ReportDocument  'creo il report
            cryRpt.Load("C:\Users\cristian\Documents\Visual Studio 2010\Projects\UTILITY\UTILITY\CrystalReport1.rpt") ' lo carico indicandone il percorso
     
          
          
            Dim ds As New DataSet   'creo il mio dataset 
            Dim t As DataTable = ds.Tables.Add("Items") 'creo la mia datatable
    
            t.Columns.Add("numero", Type.GetType("System.Int32")) 'aggiungo la colonna numero
        
    
            Dim r As DataRow ' creo la riga del datatable
            Dim i As Integer
    
            For i = 0 To 9 ' popolo il mio datatable con un ciclo
    
                r = t.NewRow()
                r("numero") = i
                
                t.Rows.Add(r)
            Next
    
            
             cryRpt.SetDataSource(ds) 'imposto come risorsa dati del report il mio dataset 
    
            CrystalReportViewer1.ReportSource =  cryRpt 'imposto come risorsa del crystal report viewer il mio report
            CrystalReportViewer1.Refresh()
    
    
        End Sub
    Cliccando sul Button mi appare questo errore:

    DIASSEMBLY "ORIGINE DATI NON DISPONIBILE"

    FileNotFoundExeception non è stata gestita

    "Impossibile caricare il file o l'assembly 'file:///C:\Program Files\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Common\SAP BusinessObjects Enterprise XI 4.0\win32_x86\dotnet1\crdb_adoplus.dll' o una delle relative dipendenze. Impossibile trovare il file specificato."


    L'errore durante il debug lo da alla riga:

    cryRpt.SetDataSource(ds)

    Inoltre non riesco a capire se il mio dataset si popola ....

    Qualcuno può darmi una mano e vedere dove sbaglio?
    Grazie

  7. #7
    L'avatar di elisab
    elisab non è in linea Very Important Person
    Post
    1,750
    Per saper se il ds si popola metti un punto d'interruzione dopo che hai aggiunto le righe e poi in debug quando s'interrompe posiziona il puntatore su ds all'interno del listato, nel tooltip che ti compare premi l'icona della lente d'ingrandimento (2 volte ma non è un doppio click) per accedere al visualizzatore DataSet.

    Nella riga che ti solleva l'eccezione hai provato a specificare il DataTable?
    codice:
    cryRpt.SetDataSource(t)
    Ultima modifica di elisab; 16-10-2011 14:22 
    Il Crossposting è vietato dalla Netiquette.

    Tutti gli utenti sono invitatati ad indicare nel titolo la versione di VB, Visual Studio o il Framework di compilazione.

    NB: In presenza del SyntaxHighlighter (codice colorato con numeri di riga a lato) prima di copiare il codice eseguire doppio click sulla finestra di codice, altrimenti mancheranno tutti i ritorno a capo.

  8. #8
    cris77 non è in linea Scolaretto
    Post
    127
    Grazie elisab del conisiglio riguardo come vedere se il mio dataset si popola ... in effetti ora vedo i suoi valori nel modo che mi hai detto però io vorrei inserire questi valori nel mio report.... ma non riesco ... mi da errrore comunque mettendo : cryRpt.SetDataSource(t) anche perchè t indica una colonna del datatable non credo che la riconosca se non indico almeno il dataset.

    Quello che non capisco è come andare a inserire questi valori sul componente Dataset1 che ho creato per poi ritrovarmeli sul report visto che ho connesso il dataset con crystal report ... Vi ricordo che il componente Dataset1 è costituito da una sola colonna "numero" ed è vuoto...

    Come faccio? Ho guardato dappertutto sul web ma sono postati solo argomenti di questo tipo solo con connessione ad un database (così è semplicissimo).

    l'unico articolo che ho trovato è questo Crystal Reports Without Database
    ma a me non funziona
    Ultima modifica di elisab; 16-10-2011 22:51  Motivo: corretto link

  9. #9
    L'avatar di elisab
    elisab non è in linea Very Important Person
    Post
    1,750
    Quote Originariamente inviato da cris77 Visualizza il messaggio
    mi da errrore comunque mettendo : cryRpt.SetDataSource(t) anche perchè t indica una colonna del datatable non credo che la riconosca se non indico almeno il dataset.
    t lo dichiari DataTable, non è una colonna.
    codice:
    Dim t As DataTable = ds.Tables.Add("Items") 'creo la mia datatable
    Quello che noto è che nell'esempio come argomento di SetDataSource specifica un DataTable e non un DataSet
    codice:
           objRpt.SetDataSource(ds.Tables(1))
    per te dovrebbe essere
    codice:
    cryRpt.SetDataSource(t)
    'oppure
    cryRpt.SetDataSource(ds.Tables(0))
    'oppure
    cryRpt.SetDataSource(ds.Tables("nomeDataTable"))
    Però ha detto che solleva ugualmente l'eccezione, è sempre la stessa?

    Se vuoi specificare il ds allora il tuo DataTable non si può chiamare "Items" ma si deve chiamare con lo stesso nome che hai impostato nel Wizard "DataTable1"

    Quell'eccezione penso però che riguardi tutt'altro, cercando l'errore in inglese ho trovato questo Crystal Reports & Framework 4 (crdb_adoplus.dll) | Spyriadis Network e questo [Solved] Crystal Report Error in VS2010 - CodeProject.
    Il Crossposting è vietato dalla Netiquette.

    Tutti gli utenti sono invitatati ad indicare nel titolo la versione di VB, Visual Studio o il Framework di compilazione.

    NB: In presenza del SyntaxHighlighter (codice colorato con numeri di riga a lato) prima di copiare il codice eseguire doppio click sulla finestra di codice, altrimenti mancheranno tutti i ritorno a capo.

  10. #10
    L'avatar di elisab
    elisab non è in linea Very Important Person
    Post
    1,750
    Le modifiche deve farle un moderatore, provvedo io. Quando l'utente scrive di aver risolto (ovviamente indicando anche come ha risolto) mettiamo il tag.

    Per l'ultimo errore ti creo una nuova discussione e grazie per aver condiviso la soluzione.
    Il Crossposting è vietato dalla Netiquette.

    Tutti gli utenti sono invitatati ad indicare nel titolo la versione di VB, Visual Studio o il Framework di compilazione.

    NB: In presenza del SyntaxHighlighter (codice colorato con numeri di riga a lato) prima di copiare il codice eseguire doppio click sulla finestra di codice, altrimenti mancheranno tutti i ritorno a capo.

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi