Erore nella stampa

sabato 01 settembre 2007 - 15.01

bostongeorge985 Profilo | Newbie

Salve,
Sono un novello programmatore in vb.net,

ho creato un programma,in vb.net, che contiene un report creato con cr8 e ho associato i dati tramite l'esperto database.
Quando provo ad eseguire la stampa dal mio pc tutto va bene, ma cambiando pc, mi visualizza una finestra che richiede
Nome server,Database,Id collegamento e password.
Ho capito che il problema consiste nel percorso del database che ho associato tramite l'esperto database.
Qualcuno mi potrebbe dire come devo fare per far stampare i dati su tutti i pc?
grazie.


P.S.Utilizzando l'esperto database e associando i dati al dataset che utilizzo nel mio programma, i dati delle tabelle non vengono visualizzati correttamente.

SSUPERPIPPO Profilo | Guru

>Salve,

Ciao e benvenuto...

>Sono un novello programmatore in vb.net,
>ho creato un programma,in vb.net, che contiene un report creato con cr8 e ho associato i dati tramite l'esperto database.
>Quando provo ad eseguire la stampa dal mio pc tutto va bene, ma cambiando pc, mi visualizza una finestra che richiede
>Nome server,Database,Id collegamento e password.
>Ho capito che il problema consiste nel percorso del database che ho associato tramite l'esperto database.
>Qualcuno mi potrebbe dire come devo fare per far stampare i dati su tutti i pc?
>grazie.

>P.S.Utilizzando l'esperto database e associando i dati al dataset che utilizzo nel mio programma, i dati delle tabelle non vengono >visualizzati correttamente.

A questo link trovi un thread a cui ho partecipato che dovrebbe fare al caso tuo: http://www.dotnethell.it/forum/messages.aspx?ThreadID=17496

Ciao

Alessandro

http://blogs.dotnethell.it/alebadalin

bostongeorge985 Profilo | Newbie

Grazie per il tuo interesse Alessandro,

ma non ho capito cosa devo assegnare al mio 'CrystalReportViewer.ReportSource' affinchè mi possa caricare il report.

SSUPERPIPPO Profilo | Guru

>Grazie per il tuo interesse Alessandro,

di nulla.

>ma non ho capito cosa devo assegnare al mio 'CrystalReportViewer.ReportSource' affinchè mi possa caricare il report.

ecco la procedura:

Rifacendomi all'esempio del link che ti avevo allegato:

CrystalReportViewer.ReportSource = Stampa <== Oggetto di tipo ReportDocumenti precedentemente creato
CrystalReportViewer.SelectionFormula = StrFiltro <== Eventuale select per filtrare i dati
CrystalReportViewer.Show()

Ciao

Alessandro

http://blogs.dotnethell.it/alebadalin

bostongeorge985 Profilo | Newbie

Caro alessandro,

ho inserito il seguente codice nell'evento load del form che contiene il mio crystalreportviewer ma non visualizza nessun dato del database,devo inserire qualcosa tipo imports.....o altro?


Dim Stampa As New ReportDocument
Dim Tabella As Table
Dim StrReport As String = Application.StartupPath & "\fatt.rpt"

Stampa.Load(StrReport)

For Each Tabella In Stampa.Database.Tables
Tabella.SetDataSource(Me.Dssimply)
Next Tabella
view1.ReportSource = Stampa
view1.Show()

-view1 è il mio crystalreportviewer
-dssimply è il mio dataset

freeteo Profilo | Guru

ciao,
forse nel passare il dataset non passi i dati giusti, andiamo con ordine:

- primo passo: creare il report basato su una struttura di dati che poi dovreai passare tale e quale (ovviamente cambieranno i dati, ma la lista di campi e l'ordine deve essere uguale)
- secondo passo riempire il dataset e magari verificare a debug che ci siano dati dentro (non si sa mai)
- caricato il report come fai tu, nel cicolo dove associ i dati, verifica di associare la tabella giusta del dataset alla tabella gisuta del dataset es:
mioreport.Database.Tables[0].SetDatasource( mioDataset.Tables[0]);
mioreport.Database.Tables[1].SetDatasource( mioDataset.Tables[1]);
...
il tuo ciclo assegnava sempre lo stesso set di dati a tutte le tabelle.

Cmq sia il tuo codice andava abbastanza bene, controlla bene la "mappatura" dei dati tra il dataset e Tabels del report.
ciao.

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

bostongeorge985 Profilo | Newbie

Grazie Matteo,

ho inserito il tuo codice ma non funziona ugualmente.
Non so cosa devo fare perchè i dati li carica ma non li visualizza.

freeteo Profilo | Guru

ciao,
puoi scorporare il pezzo relativo al report e allegarlo? cosi' verifico direttamente cosa c'e' che non va...

ps: se puoi mettimi anceh un db di esempio che cosi' provo con qualche dato...
ciao.

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

bostongeorge985 Profilo | Newbie

Mi dispiace matteo ma non riesco ad allegare il file perchè è troppo grande.
Potrsti postarmi qualche frammento di codice che conosci tu cosi provo ad adattarlo?
grazie

freeteo Profilo | Guru

ciao,
conviene che me lo mandi alla mia mail che trovi sul mio profilo, magari prova a togliere le parti che non sono necessarie...grazie
ciao.

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

freeteo Profilo | Guru

ciao,
sto guardando 1po il progetto che mi hai mandato, ho trovato 2 errori:
1- non passi un dataset con le tabelle piene al report, e lo vedi a debug perhce' non hanno righe (Me.Dssimply.Tables(x).Rows.Count è 0)

2- non hai messo i campi trascinandoli dallì'esperto database nel report, hai messo olo campi di testo che sono le "label" della stampa


Risoluzione:
1- abilita il copdice che hai commentato che carica i dati dal db prima di passarli al report (passali settatndo tabella per tabella per sicurezza)

2- nel report, vicino alle label trascina i campi che hai nella "document outline" di vs quando hai aperto il report.Per sicurezza in basso c'e' anche il pseudopulsante per avere un'anteprima senza passare tramite compilazione, verifica anche li che carichi i dati del db e si visualizzino correttamente.


ciao.

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

bostongeorge985 Profilo | Newbie

ciao matteo,
le operazioni che mi hai elencato le ho già fatte e non ho avuto un buon esito.
prima di mandarti il progetto ho cancellato i campi del report associati a al dataset tramite trascinamento.
siccome sono un progammatore ho provato a portare il mio progetto in azienda ma nessuno sa come risolverlo.
se provi ad associare i dati del dataset nel report vedrai che quando avvii l'anteprima di stampa visualizza solo il report con i campi non associati ad alcun dato.

attendo una tua gentile risposta....

freeteo Profilo | Guru

ciao e scusami del ritardo ma mi ero dimenticato di questo post...perdono!
Cmq sia, pensando al tuo problema, il punto sta nel fatto che Crystal nasce per visualizzare tanti dati, e legarli insieme.
Nel tuo caso invece le tabelle che hai aggiunto al report sono scollegate (ed è giusto visto come hai gestito il progetto) quindi si incarta nel render del report e quindi ti fa questi comportamenti anomali.

Per risolvere ti consiglio di usare i sottoreport al posto delle tabelle, accorpando alcuni dati insieme (left join o cmq risultato "piatto" della query) in modo da snellire il report (e velocizzarlo) ma anche in modo da avere ogni report (sia principale che sottoreport) con una sola tabella.

In poche parole, piu' o meno questa situazione:
- 1a sola tabella nel report principale (vedi se riesci ad accorpare tramite left-join 1po di dati tipo il vettore/spedizione/ etc...)
- 1sottoreport per il destinatario (anche qui se accorpi 1po di dati di indirizzo fai entrambe le aree con una sola tabella)
- 1sottoreport per gli articoli (qui passerai n righe mentrenegli altri passerai una sola riga)

da codice poi invece di passare il setdatasource della table, lo passi al sottoreport relativo

...
Stampa.Subreports("destinatario").SetDataSource(Me.Dssimply.Tables("destinatorio"))
...


Questo è l'unico consiglio che posso darti per avere una struttura piu' semplice e facilemnte gestibile, ma soprattutto funzionante, altrimenti mi sa proprio che non ce la farai a meno di impostare vari llink tra le tabelle e sinceramente non garantisco su prestazioni di report con tante tabelle collegate, io ho sempre lavorato a monte nella query...

ciao.

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

bostongeorge985 Profilo | Newbie

Ciao Matteo,

ho risolto il problema in modo pressochè rudimentale,ma alla fine funziona.

In pratica ho creato tanti dataset per quante sono le tabelle utilizzate nel report, poi a runtime associo i dati, e il gioco è fatto.

Ti ringrazio fortemente per la tua disponibilità.

Gabriele

freeteo Profilo | Guru

>ho risolto il problema in modo pressochè rudimentale,ma alla
>fine funziona.
>In pratica ho creato tanti dataset per quante sono le tabelle
>utilizzate nel report, poi a runtime associo i dati, e il gioco
>è fatto.
ok fa niente, se sei riuscito e le prestazioni e la facilita' di manutenzione ti sembrano buone per il tuo progetto,ottima soluzione!


>Ti ringrazio fortemente per la tua disponibilità.
figurati, siamo qui per questo...
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