Problema portabilità db

lunedì 23 luglio 2007 - 07.28

attilio Profilo | Junior Member

Salvve sto cercando di creare un Report in Vs2005 sembra funzionare abbastanza bene, la base dati è su access.
Il problema si pone quando sposto il file su un'altra macchina.Cerca un path del database che era quello sulla macchina di creazione e non lo trova.
Come posso dare un percorso generico tipo LocalDir\Miodb?
In piu su alcune macchine mi viene restituito un errore di CrystalRepost.Engine.....
e non mi apre alcun report.
Grazie

freeteo Profilo | Guru

ciao,
effettivamente quando costruisci un report lui si salva la connessione al db, ma è da cambiare sempre quando si distribuisce ovviamente.
Percui, si ci sono 2 modi per farlo:

- impostare le proprieta' di connessione tramite le LogonInfo:

...
ReportDocument mioreport as new ReportDocument(); mioreport .Load("c:\...\repotr.rpt"); Dim logOnInfo As New TableLogOnInfo logOnInfo = mioreport.Database.Tables.Item("Tabella").LogOnInfo logOnInfo.ConnectionInfo.ServerName = "SERVER" logOnInfo.ConnectionInfo.DatabaseName = "miodb" logOnInfo.ConnectionInfo.UserID = "User" logOnInfo.ConnectionInfo.Password = "pwd" logOnInfo.TableName = Tabella" mioreport.Database.Tables[0].ApplyLogOnInfo(logOnInfo) CrystalReportViewer1.ReportSource = mioreport CrystalReportViewer1.DataBind(); ...

- caricare i dati in 1 datatable/dataset e poi passarlo al report con il metodo "setDataSource":
Dataset miods = new Dataset(); ... ReportDocument mioreport = new ReportDocument (); mioreport.Load("c:\...\repotr.rpt"); mioreport .SetDataSource (miods); ...
[vale anche se hai una tabella sola (quindi DataTable al posto di DataSet)

prova a vedere quale delle 2 ti sembra piu facile nella tua situazione
ciao.

ciao.

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

attilio Profilo | Junior Member

Perfetto molto gentile....ma io lo sto scrivendo in c# la sintassi cambia molto?
Grazie ancora!

attilio Profilo | Junior Member

Scusate la doppia risposta ma dimenticavo che utilizzo un database access e dove mi viene chiesto il campo server non so cosa scrivere...(Il nome del Db o della macchina oppure lascio vuoto?)

freeteo Profilo | Guru

ciao,
per quanto riguarda c# e vb.net sono molto simili, ce la fai tranquillamente da solo ma se vuoi
qualcosa di "automatico" puoi usare anche qualche tool, o questo sito:
http://www.carlosag.net/Tools/CodeTranslator/Default.aspx

per quanto riguarda il discorso di avere un db access ti basta cambiare il path del server:

.... ReportDocument report = new ReportDocument(); report.Load(@"c:\...\Crystal\reportaccess.rpt"); TableLogOnInfo info = report.Database.Tables[0].LogOnInfo; info.ConnectionInfo.ServerName = @"c:\...\pp.mdb"; report.Database.Tables[0].ApplyLogOnInfo(info); crystalReportViewer1.ReportSource = report; ....

attilio Profilo | Junior Member

lo proverò presto in modo da poter gestire questa applicazione in modo completo grazie

freeteo Profilo | Guru

ok perfetto fammi sapere se sei riuscito...
ciao.

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

attilio Profilo | Junior Member

ReportDocument mioreport = new ReportDocument();
mioreport.Load(report.rpt);
TableLogOnInfo logon = new TableLogOnInfo();
logon.ConnectionInfo.DatabaseName = "miodb.mdb";
logon.ConnectionInfo.ServerName = "miodb.mdb";

//mioreport.Database.Tables[0].ApplyLogOnInfo(logon);
crystalReportViewer1.ReportSource = mioreport;
string selectformula = "({Interventi.ID})= " + CodIntervento.ToString();
crystalReportViewer1.SelectionFormula = selectformula;
crystalReportViewer1.RefreshReport();ù

questo è un pezzetto di codice che utilizzo per aprire il report ma non mi lascia accedere al db in realtà ora mi si apre la schermata di accesso db nome utente e pw.
cosa mi consigli?

freeteo Profilo | Guru

ciao,
perche' hai commentato la riga in cui associ le credenziali alla tabella del report ?
ciao.

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

attilio Profilo | Junior Member

stavo provando...comunque niente da fare mi si apre sempre la schermata di collegamento al database.e non mi fa leggere il Db.

freeteo Profilo | Guru

ciao,
ma hai provato con lo stesso identico codice (per la parte di logoinfo) che ti ho postato prima?
perche' quel codice da me va, controlla inoltre che nn sia rimasta"sporca" la proprieta' "location" della tabella...
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5