Ciao a tutti..vi illustro la mia situazione sperando di ricevere qualche dritta come spesso succede
Sto sviluppando una applicazione winform su VisualStudio2008 in c#, che lavora con un db SQLServer2005. Tutto bene fino a che non ho voluto inserire un report fatto in Crystal 2008 (poichè lo conosco abbastanza bene).
Problemi nell'ambiente di sviluppo non ce ne sono ma al momento del deploy iniziano le grane. Vi spiego le magagne.
1) nella soluzione ho creato una cartella report e dentro ho inserito il file Caso.rpt, impostandone la proprietà Copia nella directory di output = Copia Sempre. Risultato = nessun file .rpt viene installato. Se invece aggiungo nelle proprietà del Setup > File System una cartella report e vi aggiungo il file in questione allora durante l'installazione la cartella viene creata e il file copiato. Mi spiegate qual'è la giusta procedura? tra l'altro se annullo l'impostazione di Copia nella directory di output non mi funziona più in debug.
2) a runtime sulla mia macchina va tutto bene, il report viene visualizzato correttamente; lo stesso su una seconda macchina di test dove ho fatto il login come un altro utente
se invece installiamo il sw sulle macchine dei miei colleghi, tutti amministratori di sistema, all'apertura del report viene richiesto di effettuare un login che però non va a buon fine; in particolare il nome del server è corretto ma il nome del db rimane vuoto e non modificiabile.. a cosa può essere dovuto ciò?
il report si collega ad una sp che ho abilitato in esecuzione per l'utente x e a quell'utente collego il report runtime:
codice:
private void frmReport_Load(object sender, EventArgs e)
{
myReport = new ReportDocument();
string path = "report\\Caso.rpt";
try
{
myReport.Load(path);
myReport.SetParameterValue("@id", _id);
// imposta la connessione al db
SetDBLogonForReport();
// imposta il viewer
crrvMain.ShowLogo = false;
// visualizza il report
crrvMain.ReportSource = myReport;
crrvMain.Zoom(1);
}
catch (Exception ex)
{
MessageBox.Show("Attenzione: " + ex.ToString(), "", MessageBoxButtons.OK);
}
}
// imposta i dati di connessione per il report
// nome server, nome db sono memorizzati all'interno del report
private void SetDBLogonForReport()
{
ConnectionInfo conn = new ConnectionInfo();
conn.Type = ConnectionInfoType.SQL;
conn.ServerName = "dbServer";
conn.DatabaseName = "dbName";
conn.UserID = "x";
conn.Password = "x_password";
TableLogOnInfo LInfo = new TableLogOnInfo();
foreach (CrystalDecisions.CrystalReports.Engine.Table table in myReport.Database.Tables)
{
LInfo = table.LogOnInfo;
LInfo.ConnectionInfo = conn;
table.ApplyLogOnInfo(LInfo);
}
}
la cosa strana che osservo è che mentre altri report quando li apro a design e lancio una anteprima mi chiedono di inserire la password per la connessione, questo non lo fa.. è come se usasse una protezione integrata che però io ho disabilitato reimpostando l'origine dati