CR XI CAMBIARE IL PERCORSO DEI DATI

martedì 23 maggio 2006 - 08.31

d3c0 Profilo | Newbie

Ciao a tutti,
ho creato il mio file .rpt con CR XI e importato perfettamente in .net 2005, il tutto e' funzionante, ma se io volessi mettere il mio db.mdb in un'altra directory del mio pc come faccio a dirlo a CR XI ??? Ossia, è possibile farlo da codice o si puo fare solo in versione grafica e quindi lasciare definitivamente il db in quella dir e nn spostarlo mai + ???

Grazie a tutti

ciao

freeteo Profilo | Guru

>Ciao a tutti,
ciao

>se io volessi mettere il mio db.mdb in un'altra directory del mio pc come faccio a
>dirlo a CR XI ??? Ossia, è possibile farlo da codice o si puo
>fare solo in versione grafica e quindi lasciare definitivamente
>il db in quella dir e nn spostarlo mai + ???
assolutamente lo puoi fare altrimenti che programma sarebbe!!! si si niente paura, quello che costruisci a design time poi lo puoi tranquillamente cusotmizzare quando lo distribuisci, passandogli da codice o i parametri di connessione oppure direttamente tutti i dati (gli passi la tabella che carichi con ado.net) .

Per il 1mo metodo devi usare le LogonInfo, puoi guardare qui:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=5078

per il 2do metodo devi fare 1po di codice:
- usare 1 oggetto ReportDocument
- usare ado.net normale per caricarti i dati inj 1a datatable
- passare la datatable al report con il metodo SetDataSource
qualcosa del tipo:

DataTable miaTab = new DataTable ();
...
ReportDocument mioreport = new ReportDocument ();
mioreport.load("c:\..\..miofile
mioreport .SetDataSource (miaTab );
...

>Grazie a tutti
di niente è sempre 1piacere


ciao.

Matteo Raumer
MCAD ... .net addicted :-)
http://blogs.dotnethell.it/freeteo

d3c0 Profilo | Newbie

.....Ancora niente, forse mi sono spiegato male, ritento !
Con CR XI ho creato con la procedura guidata il file rpt, ho inserito i campi del db.mdb che voglio vedere nel report ecc.. (quindi il file rpt gia lo sa dove andare a trovare il db.mdb)
Successivamente il file rpt l'ho importato come elemento esistente nel progetto, lo carico nel viuwer e tutto funziona correttamente.
La mia domanda e' :
se volessi spostare il db.mdb come faccio a dirlo al file rpt che il db si trova in un'altra zona del mio pc??

Posto un po di codice, purtroppo errato !!!!

Private cnt As OleDbConnection
Private adp As OleDbDataAdapter
Private dt As DataSet
Private sql As String = "SELECT * FROM tabella"
Private riga As String
Private rea As StreamReader

Try

rea = New StreamReader(CurDir() & "\cfg.txt")
riga = rea.ReadLine ----> leggo il path dove si trova il mio db.mdb e lo passo a string
rea.Close()

cnt = New OleDbConnection(strCnt)
cnt.Open()
adp = New OleDbDataAdapter(sql, cnt)
dt = New DataSet
adp.Fill(dt, "tabella")

Dim repo As New prova ----> questo e' il file rpt creato con CR XI e importato in vb.net
repo.Load(riga) ----> (forse questo e' l'errore) carico il db.mdb
repo.SetDataSource(dt)

CrystalReportViewer1.ReportSource = repo ---> carico nel viewer
cnt.Close()
...
...
...

ma niente........ l'applicazione si chiude senza dare errori !!!!

nn dormo piu' la notte !!!!

ciao e grazie ancora

freeteo Profilo | Guru

ciao,
il tuo problema sta qui:
>Dim repo As New prova ----> questo e' il file rpt creato con

devi usare 1oggetto report generico, caricare il report dal path e poi passargli il datasource come DataTable..quindi:
Dim repo As New ReportdDocument

il resto lo puoi lasciare...

ciao.

Matteo Raumer
MCAD ... .net addicted :-)
http://blogs.dotnethell.it/freeteo

d3c0 Profilo | Newbie

niente...... nn va

questo e' il mio codice

Try

cnt = New OleDbConnection(strCnt)
cnt.Open()
adp = New OleDbDataAdapter(sql, cnt)
dt = New DataSet
adp.Fill(dt, "tabella")

Dim repo As New ReportDocument
repo.Load(curdir() & " \prova.rpt")
repo.SetDataSource(dt)

cnt.Close()

CrystalReportViewer1.ReportSource = repo

l'anteprima si apre e poi si chiude il prog

freeteo Profilo | Guru

caspita si chiude il programma sembra 1errore di qualche libreria...
ma hai provato a debuggare, i dati nella tabella ci sono, il report viene caricato giusto o da qualche exception?

cmq ti ho allegato1 esempio che funziona sicuramente, dimmi se a te da problemi...
ciao.

Matteo Raumer
MCAD ... .net addicted :-)
http://blogs.dotnethell.it/freeteo

d3c0 Profilo | Newbie

Il tuo funziona perfettamente, il mio si chiude e nn da nessuna eccezione, la differenza che c'è tra i due prog. e' che il tuo ha il db nel progetto il mio no, la struttura del report e' stata creata sul db che dovrebbe utilizzare ma il path dove prendere i dati lo vorrei passare io al report, perche' come dicevo in altri post il mio prog nn sa dove si trova il db !!

grazie per la tua pazienza freeteo

freeteo Profilo | Guru

ciao,
il db è nel progetto proprio perche quando la gente se lo scarica abbia 1a struttura da cui pescare i dati (è 1 esempio e quindi ho messo tutto quello che serviva...)
Ma se tu lo sposti a mano su 1altra directory e vai nel codice, piu o meno alla riga 104 del file Form1.vb e cambi il path con quello tuo vedrai che l'esempio funziona tranquillamente.
Se in quelle righe va a cambiare anche il tipo di connessiona passando magari la stringa di connessione per 1 server sql vedrai che va lo stesso...quindi controlla bene le differenze tra il tuo progetto e l'esempio mio....ti sfugge qualcosa, se rifai gli stessi passi (ovviamente adattato al tuo progetto) deve funzionare
ciao.

Matteo Raumer
MCAD ... .net addicted :-)
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