Parametro dinamico

venerdì 09 maggio 2008 - 09.49

kekerit Profilo | Newbie

Salve,
avrei un problema con un parametro inserito in un sottoreport, spero che qualcuno possa aiutarmi :-(
Vi illustro la situazione:
il mio report deve visualizzare una elenco di accessori che l'utente può scegliere da una lista, perciò ho creato un parametro dinamico che tramite un "comando sql" mi visualizza tutti gli accessori che ho a disposizione nel DB e fin qui tutto lineare; il problema si pone quando richiamo il report dalla mia applicazione (in c#), infatti prima della finestra di selezione accessori, mi visualizza una finestra dove mi chiede il nome del server, il nome dell'utente e la password; come posso fare per evitarlo?

Grazie

Veronica

freeteo Profilo | Guru

ciao,
i dati ri vengono chiesti perchè il report non sa dove pescarli, oppure tu non glieli hai passati.
Guarda qui:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=21962

come vedi ci sono 2 metodi, o gli dici i parametri di connessione (LogonInfo) oppure glieli passi tu (report.SetDataSource(...)) quest'ultimo, sembra proprio il tuo caso, dato che sul db hai già fatto la query con il filtro dell'utente, e quindi ti basta passarglieli con il codice che trovi in quel post.

ciao.

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

kekerit Profilo | Newbie

Grazie per avermi risposto :-)
Nel codice imposto i parametri di connessione, proprio come mi hai indicato tu, ma non funziona lo stesso.
Avresti un'altra idea?

Grazie per il tuo aiuto

Veronica

freeteo Profilo | Guru

ciao,
potrebbe essere che hai fatto il report attaccandoti a sql? In tal caso potrebbe essere rimasta sporca la proprietà "location" della tabella, prova a settarla correttamente come mostrato qui:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=5303
dove zRpt è la variabile di tipo "ReportDocument".

Eventualmente prova a postarmi il codice, che verifico perchè anche a te deve funzionare...

ciao.

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

kekerit Profilo | Newbie

già fatto, uffà... ti posto il mio codice:

private CrystalDecisions.CrystalReports.Engine.ReportDocument setNewConnection(CrystalDecisions.CrystalReports.Engine.ReportDocument crReportDocument, string ServerName_, string DatabaseName_)
{
Database crDatabase, crDataBaseSub;
Tables crTables, crTablesSub;
Table crTable, crTableSub;
TableLogOnInfo crTableLogOnInfo, crTableLogOnInfoSub;
ConnectionInfo crConnectionInfo = new ConnectionInfo();
crConnectionInfo.ServerName = ServerName_;
crConnectionInfo.DatabaseName = DatabaseName_;
crConnectionInfo.UserID = "admin";
crConnectionInfo.Password = "";

for (int i = 0; i < crReportDocument.Subreports.Count; i++)
{
crDataBaseSub = crReportDocument.Subreports[i].Database;
crTablesSub = crDataBaseSub.Tables;
for (int j = 0; j < crTablesSub.Count; j++)
{
crTableSub = crTablesSub[j];
crTableLogOnInfoSub = crTableSub.LogOnInfo;
crTableLogOnInfoSub.ConnectionInfo = crConnectionInfo;
crTableSub.ApplyLogOnInfo(crTableLogOnInfoSub);
crTableSub.Location = crTableSub.Location.Substring(crTableSub.Location.LastIndexOf(".") + 1);
}
}

crDatabase = crReportDocument.Database;
crTables = crDatabase.Tables;
for (int i = 0; i < crTables.Count; i++)
{
crTable = crTables[i];
crTableLogOnInfo = crTable.LogOnInfo;
crTableLogOnInfo.ConnectionInfo = crConnectionInfo;
crTable.ApplyLogOnInfo(crTableLogOnInfo);
crTable.Location = crTable.Location.Substring(crTable.Location.LastIndexOf(".") + 1);
}

return crReportDocument;
}

GRAZIE

freeteo Profilo | Guru

il codice sembra giusto...ma la variabile "crReportDocument" come la carichi?
Cmq debuggando hai verificato che le logonInfo siano effettivamente state settate nell'oggetto ReportDocument?


ciao.

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

kekerit Profilo | Newbie

Buongiorno....
Questo è il codice di caricamento report:

this.crystalReportViewer1.ReportSource = this.setNewConnection(Report, ConnectionUtility.PathMDE, ConnectionUtility.PathMDE);

dove Report è
Report.Load(ConnectionUtility.PathApplicazione + "\\Report\\" + ConnectionUtility.NomeReport + ".rpt");

Grazie ancora per il tuo valido aiuto

Veronica
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