Problema progettazione report services

venerdì 12 ottobre 2007 - 15.22

gaetanodimatteo Profilo | Newbie

Salve a tutti,
ho l'esigenza di stampare i dati contenuti in una tabella creata a runtime e non ho idea di come progettare il report.
Non riesco ad associare i singoli campi.
Da quello che ho letto sul forum tutti parlano di creazione di origine dati in progettazione e dataset dipizzati.
Possibile che non si possa associare la fonte dati del report da codice, come con i vecchi datareport?
Vi prego rispondetemi, mi sto demoralizzando.

Saluti

Gaetano

Paolo72 Profilo | Newbie

Ciao Gaetano,
vorrei solo sapere una cosa: che linguaggio di programmazione usi? O meglio che versione di Visual Basic?
Se utilizzi la 6 posso esseri d'aiuto e puoi utilizzare il seguente codice

ContolloCrystalReport.DataFiles(0) = App.Path & "\Archivio.mdb"
ContolloCrystalReport.ReportFileName = App.Path & "\Documento.rpt"
ContolloCrystalReport.Action = 1

Se invece utilizzi .NET... bè non so se lo stesso codice funziona.

Fammi sapere

Paolo

P.S.: per utilizzare il codice che ti ho dato devi inserire nel progetto il controllo relativo a Cristll32.OCX abilitando il flag alla voce Crystal Report Control nella casella strumenti (parlo sempre in relazione al VB 6)

gaetanodimatteo Profilo | Newbie

Grazie per la risposta, pensavo quasi che nessuno leggesse il post.
Il problema è che sto cercando di non usare Crystal report e lo sto facendo con vb2005.

Paolo72 Profilo | Newbie

Per quanto riguarda il fatto che nessuno legge il post devi tenere presente che le persone iscritti alla mailing list rispondono appena hanno un pò di tempo libero e se hanno le conoscenze giuste per dare una mano.

Riguardo al tuo problema, mi rimane una cosa oscura: se non utilizzi il Crystal Report cosa utilizzi per creare un report?

Un suggerimento: quando chiedi un'interrogazione su una qualsiasi mailing list esponi nel modo più dettagliato possibile il problema (magari riportando un pò il codice "incriminato") ed inoltre scrivi anche cosa utilizzi, il Sistema Operativo, ecc. Non ti preoccupare di essere troppo prolisso a volte è meglio ripetere venti volte la stessa cosa invece di non dirla affatto. Così facendo riesci ad ottenere più velocemente le risposte ed anche pù risposte.
Non mi sto riferendo solo a questo problema, ma in generale.

Fammi sapere e vediamo se riesco a darti una mano anche se il VB.NET non l'ho mai utilizzato se non ad uno stage.

Paolo

freeteo Profilo | Guru

ciao,
concordo con Paolo sul fatto che rispondiamo quando possiamo, il bello di un forum è che puoi avere informazioni gratuitamente da tante persone e quindi con tanti punti di vista, la cosa che non hai sicuramente è la garanzia che venga fatto in tempo breve.
Questo perche' chi ti risponde è qualcuno che sa darti qualche suggerimento, ma sicuramente fa anche altri lavori durante la giornata, magari proprio lavori a tempo pieno, quindi appena puo' risponde, ma stai tranquillo che i post di questo forum prima o poi vengono risposti quasi tutti.

Tornando al discorso report invece, ti chiedo come intendi procedere a livello di strumento, perche' se pensi di farti dei report a mano, ti consiglio di metterti l'anima in pace perche' perderai tantissimo tempo.
Sicuramente la scelta di un tool di reportistica è d'obbligo oramai, e a mio avviso hai 3 strade: SqlReporting, Crystal, o Active Report.
Se pensi ad uno dei primi 2 sicuramente possiamo aiutarti, se scegli il terzo, io almeno, non lo conosco.

Cmq sia, per i primi 2 il concetto i passi base sono questi:
- Crei un report, dando a design time una sorgente dati (puo' essere un oggetto che hai creato nel progetto (tipo una tua classe "Cliente" ) oppure puoi andare a fare ad agganciart ad un database.

- disegni il report mettendo i campi dove ti interessa (se usi Crystal, lavorerai con la sezione "dettagli", se lavori con SqlReporting ti affidi a componenti come liste/tabell/matrici dove a runtime i dati si ripeteranno (sono le righe in sostanza)

- da codice gli setti la sorgente dati, magari ti fai la query tu dal database riempiendo un oggetto "DataTable" e poi passandolo al report con il metodo "SetDataSource" di un oggetto report:

Crystal:
--------------------
Dataset miods = new Dataset(); ... ReportDocument mioreport = new ReportDocument (); mioreport.load(@"c:\...miofile mioreport .SetDataSource (miods ); ...


SqlREporting:
--------------------
... LocalReport report = this.reportViewer1.LocalReport; report.ReportPath = @"C:\....\RDLC\ReportOrdini.rdlc"; ReportDataSource dati = new ReportDataSource("ds_Ordini", dataTableOrdini) report.DataSources.Add(dati); reportViewer1.RefreshReport(); ...

Il codice è in c# ma passare a vb.net è sicuramente molto veloce.
ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

gaetanodimatteo Profilo | Newbie

Forse dovrei chiedere scusa per il dubbio da me espresso, ma si trattava solo di un
commento a titolo rassicurativo visto che, essendo nuovo dell'argomento,
pensavo si trattasse di un post (il mio) di scarso rilievo/interesse.

Mi scuso anche per l'apparente pretesa di risposta immediata ;
come vedete anche io non rispondo subito.

Ritornando al problema in oggetto (sperando di essere quanto più esaustivo possibile):

ho l'esigenza di creare una o più tabelle (da collegare ad un report) a runtime che, a seconda dei casi, potrebbero avere
strutture diverse, ma alcuni campi dovrebbero restare fissi.
Il problema è che le tabelle non sono presenti nel DB e quindi per la progettazione
dei report dovrei crearle di proposito.

Sono riuscito a creare i report con un dataset tipizzato ma non posso passare il report
alle persone che collaborano con me senza passare loro la stessa fonte dati.
Nulla di difficile, per carità, mi sembra, però, superfluo passare la fonte dati
se sono già presente sia il DB che il report, interfacciati dal codice (insana abitudine a vb6).

Mi chiedevo, a questo punto, se si possa lavorare come (o quasi) con i datareport di vb6.
Non è più un’esigenza, chiariamoci (per questo ho marcato il thread come risolto),
ma una semplice curiosità per portarmi ad una rassegnazione Definitiva.

Grazie

Gaetano

freeteo Profilo | Guru

>Forse dovrei chiedere scusa per il dubbio da me espresso, ma si trattava solo di un
>commento a titolo rassicurativo visto che, essendo nuovo dell'argomento,
>pensavo si trattasse di un post (il mio) di scarso rilievo/interesse.
>Mi scuso anche per l'apparente pretesa di risposta immediata
>come vedete anche io non rispondo subito.
nessun problema nemmeno il nostro era un rimprovero, era solo una considerazione reale che purtroppo non riusciamo ad essere sempre tempestivi visto i lavori che facciamo durante il giorno.



>ho l'esigenza di creare una o più tabelle (da collegare ad un
>report) a runtime che, a seconda dei casi, potrebbero avere
>strutture diverse, ma alcuni campi dovrebbero restare fissi.
>Il problema è che le tabelle non sono presenti nel DB e quindi per la progettazione
>dei report dovrei crearle di proposito.
il fatto che devi passare delle tabelle al report non implica che le tabelle debbano esserci in un qualche database, possono essere anche "DataTable" create a runtime (cosa che succede molto spesso proprio per esigenze di programma, tipo il fatto di avere un'agilita' nel filtrare o cmq avere fonti eterogenee, o cmq con dati aggiunti da codice).
L'unica cosa importante è che se hai progettato un report con 3 campi (che vengano dal db, da una query, da un db access fittizio che ti sei creato per fare il report, da una classe tua presente nell'applicaizione) poi la datatable/collection che gli passi con il "setdataSource" abbia cmq la stessa struttura.
Questo permette al report di visualizzarti i dati giusti, essendo stato disegnato posizionando gli stessi.



>Sono riuscito a creare i report con un dataset tipizzato ma non
>posso passare il report
>alle persone che collaborano con me senza passare loro la stessa
>fonte dati.
>Nulla di difficile, per carità, mi sembra, però, superfluo passare
>la fonte dati
>se sono già presente sia il DB che il report, interfacciati dal
>codice (insana abitudine a vb6).
certo, non occorre passare la fonte dati come ti dicevo prima, se i colleghi devono visualizzarlo gli puoi passare la datable da codice come ti dicevo sopra



>Mi chiedevo, a questo punto, se si possa lavorare come (o quasi)
>con i datareport di vb6.
non li conosco percui noin posso aiutarti, in vb6 ho sempre fatto stampe con Crystal, vista l'esigenza mia



>Non è più un’esigenza, chiariamoci (per questo ho marcato il
>thread come risolto),
>ma una semplice curiosità per portarmi ad una rassegnazione Definitiva.
...rassegnazione definitiva...


>Grazie
>Gaetano
grazie a te

ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5