VB.NET e Crystal Report XI

martedì 10 maggio 2011 - 14.31

eddyG Profilo | Junior Member

Ciao a tutti!!
Sto sviluppando un'applicazione in C# e alla fine di tutto,premendo un pulsante presente sul form vorrei mi aprisse la pagina iniziare di Crystal per poi creare un report ad hoc per i dati che gli passo.
Attualmente io ho scritto il seguente codice all'interno di un comando che poi vado ad associare ad un pulsante:
System.Diagnostics.Process.Start("Crystal Report XI Release 2");
mi visualizza un errore del tipo:
"The system cannot find the file specified"

Come posso procedere per far aprire il programma di Crystal per poi procedere con l'implementazione del Report?

Grazie

babbubba Profilo | Senior Member

Perdonami ma non ho capito cosa vuoi dire con aprire la pagina principale di crystal report... comunque:

http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx

Qui trovi una descrizione della classe process e del metodo start. Ti anticipo che tra virgolette va il nome file completo di path dell'eseguibile da lanciare.

Babbubba

www.bsoftsolutions.it

Chiedere è curiosità ... rispondere è educazione.

eddyG Profilo | Junior Member

Ho cambiato totalmente strada in quanto mi ero perso nei meandri della programmazione a codice di un report.
Ora...io ho una form e devo portare i vari campi sul report.
Ho creato un Report con CR XI vuoto e dovrei/vorrei associare ad esso un dataset/datatable che devo generare a codice con tutti i valori di ogni singolo record presente sul mio Db.
Come posso procedere per associare il dataset/datatable al report???

Per visualizzare il report scrivo questa istruzione e funziona correttamente:
System.Diagnostics.Process.Start(percorso del file.rpt presente in memoria);

Grazie

babbubba Profilo | Senior Member

Allora... ti dico come uso io un report fatto con crystal.... (uso sap crystal report 13 ma credo che nn cambi molto).

1. Faccio un dataset nel progetto.
2. Nel dataset creo una datatable con tutti i dati che voglio vedere nel report... esempio voglio vedere gli impegni di un determinato lasso di tempo ... quindi la mia datatable sara composta dalle colonne: DataInizio, DataFine, DataAppuntamento, DettaglioAppuntamento.
3. Creo un report vuoto. Aggiungo un'origine dati al report prendendo le origini dati del progetto... nel dettaglio la datatable sopra descritta e dopo aver messo i campi nelle varie sessioni salvo il report (nell'esempio DataInizio e DataFine mi servono nella sessione di intestazione di pagina in modo da avere ... "appuntamenti dal ... al ... mentre dataAppuntamento e DettaglioAppuntamento nella sessione dettagli).
4. Mi assicuro che in compilazione il file del report venga copiato nella cartella di destinazione del progetto.
5. Per visualizzare il report creo un form apposito che contiene un report viewer.
6. Nel form (lo faccio nell'evento load per avere un caricamento automatico quando richiamo il form) inserisco il codice per popolare una datatable con i dati che mi interessano (la datatable deve ereditare la struttura del dataset). Inizializzo un oggetto report impostando il percorso corretto del file report (nel mio caso parto dal path dell'eseguibile del progetto ed aggiungo il nome del file report visto che in compilazione viene creato li). Imposto la sorgente dati per il report associandogli la datatable appena popoplata. Associo il report istanziato all'origine dati del report viewer.

Fatto!

Vuoi un esempio di codice? Eccolo:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Fatto!

E' solo un esempio... come prendi i dati sono problemi tuoi (io prendo i dati da una tabella su un db mysql come puoi notare) e le eccezioni le devi gewstire (io ho usato nell'esempio solo le generiche e ho tralasciato di verificare che il file del report esista!") Il percorso del report saràa diverso (io metto i report dentro una cartella REPORT nel progetto visual studio quindi quando compilo si crea una sottocartella REPORT che contiene i report veri e propri.

Concludo che questa soluzione l'ho dovuta trovare da solo a tentativi vista la scarsa presenza di informazioni in internet (almeno quando ho creato il priomo report ora nn saprei) quindi non è assicurato che sia la piu performante ma di sicuro funziona e posso gestirmi i dati che voglio passare al report senza impazzire.

Ciao

Babbubba

www.bsoftsolutions.it

Chiedere è curiosità ... rispondere è educazione.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5