Connessione dinamica del report al db

giovedì 01 febbraio 2007 - 21.19

escaflowne Profilo | Junior Member

Ciao a tutti,
sono alle prime armi con crystal report di visual studio 2005 per cui mi scuso per la domanda "niubba"
Ho un report che si connette al db per visualizzare i dati. Dal programma in vb.net chiamo la form con CrystalReportViewer passandogli i parametri filtro.
A questo punto, però, vorrei impostare a mano la stringa di connessione con la quale il report si connette al db (il programmino che ho fatto gira in rete ed il db è sul server mentre il programma lo lancio sul client) in modo da dargli il server come riferimento.
Come si fa?

Grazie a tutti

freeteo Profilo | Guru


ciao,
per modificare i parametri di connessione al DB di un report devi usare gli oggetti "LogonInfo", ti posto qui un esempio in vb.net:

--------------------------------------- Dim mioreport as new ReportDocument() mioreport .load(server.Mappath("....")) 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(); ---------------------------------------

Qui dentro come vedi puoi impostare tutti i parametri che ti servono, dovresti riuscire senza problemi...
ciao.

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

escaflowne Profilo | Junior Member

ciao,
prima di tutto ti ringrazio per la risposta. Io ho provato in questo modo (premetto che al db non si accede con usrname e pwd ma con la sicurezza integrata):

'**NOTA crReportDocument è impostato in un modulo "varPub" in questo modo: ' Public crReportDocument As New CrystalDecisions.CrystalReports.Engine.ReportDocument ' mentre in varPub.qualeReport ci sta il nome del report Dim crExportOptions As CrystalDecisions.Shared.ExportOptions '**********carico il file crystal report crReportDocument.Load(varPub.qualeReport) '*********dichiaro gli oggetti connection info Dim crConnectionInfo As New CrystalDecisions.Shared.ConnectionInfo '*****imposto la connection info With crConnectionInfo '.UserID = Me.txtUsername.Text '.Password = Me.txtPassword.Text '.DatabaseName = Me.txtNomedb.Text '.ServerName = Me.txtServer.Text .ServerName = varPub.LeggiServer .IntegratedSecurity = True End With MsgBox(crConnectionInfo.ServerName) myCrystalReportViewer.ReportSource = varPub.crReportDocument

Dal msgbox utilizzato nel codice mi evidenzia il giusto server ma, quando il reportViewer mi lancia il report mi apre la maschera in cui inserire user name e password, nonostante gli abbia detto di usare la integrated security e dato già il nome del server (nella maschera si vede che il server è quello del design cioè .\SQLEXPRESS)

Dove sbaglio?
Grazie 1000

escaflowne Profilo | Junior Member

AGGIORNAMENTO:

ho risolto il discorso del database ma, nonostante abbia detto di usare integritySecurity continua ad aprirmi la form di richiesta di userID e password. Dove sbaglio?

Questo è il codice che utilizzo:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Sto ammattendo!!!

freeteo Profilo | Guru

ciao,
percaso è un server sql, e l'ha costruito a design attaccandoti proprio ad un sql?
Perche in quel caso devi impostare (o semplicemente sbiancare) la proprieta' "location" della tabella, come ho scritto in questo post:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=5303
ciao.

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

escaflowne Profilo | Junior Member

proprio così :)
Gli vado subito a dare un'occhiata!

Grazie

escaflowne Profilo | Junior Member

Tu sei un G-E-N-I-O

Mi hai risolto il problema. Ti ringrazio!

L'unico appunto lo muovo verso il pdf di crystalReport che insegna ad utilizzare il prodotto ma, nella parte interessata, non fa accenno al discorso della location delle table

escaflowne Profilo | Junior Member

Tutto a posto, solo che, nella prova su un server e client che vi si connettono ottengo questo errore (cosa che nei pc di sviluppo non avviene):

638x237 14Kb


Che problema riscontra? Dove posso controllare?
Grazie

freeteo Profilo | Guru

>Tu sei un G-E-N-I-O
ahahahahaah

>Mi hai risolto il problema. Ti ringrazio!
bene dai, fa piacere saperlo

>L'unico appunto lo muovo verso il pdf di crystalReport che insegna
>ad utilizzare il prodotto ma, nella parte interessata, non fa
>accenno al discorso della location delle table
si concordo, è un dettaglio non da poco pero'...e non è l'unico che si impara sul campo...pero' sai, nell'informatica vale sempre la regola che devi cmq provare, perche' tra il dire el il fare c'e un mare...di bit e quindi di rischi di non funzionare
ciao.

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

freeteo Profilo | Guru

sembra un problema sempre di login, riesci mica farti un log dei valori delle logoinfo? tipo magari quello che hai nell'oggetto prima di cambiare e dopo che hai cambiato...che magari la connessione non abbia qualche stringa non corretta...
ciao.

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

escaflowne Profilo | Junior Member

Ciao,
scusa il ritardo nella risposta ma ho voluto testare un po'.
Questo è il codice che utilizzo:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Come vedi ho provato anche a ripetere l'assegnazione dei dati della connectionInfo!

Mentre in locale funziona bene, passando sul client/server mi fallisce la testConnection() (l'ho messa per testare) e mi apre la famosa maschera di inserimento in cui il server appare correttamente ('SR2003AN\SQLEXPRESS') ma:
1. NON appare il nome del database (e qui, sinceramente, mi disarma davvero)
2. Mi spunta la IntegratedSecurity ma non va avanti

Nel log, le tabelle sono corrette e, soprattutto, il database ha il nome giusto!!!

Sbaglio qualcosa?
Grazie mille
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