Crystal report login db

giovedì 22 luglio 2004 - 12.50

contiello Profilo | Senior Member

Salve ragazzi ho la seguente esigenza:
Creare un file pdf da un file crystal report che leggi i dati di una tabella sqlserver.
Riesco ad ottenere il risultato,ma ho il sequente problema.
Quando ho sviluppato questa pagina sono riuscito al primo colpo a farla funzionare il problema è sorto in un secondo momento quando sono subentrate delle variazioni:
Nello specifico la variazione consiste nel cambiare la macchina dove risiede il database....
mi spiego meglio : quando ho creato la pagina avevo tutto sulla stessa macchina (progetto,db,report)
quindi quando dovevo lanciare la pagina aspx mi limitavo ad usare la seguente istruzione:
crReportDocument.SetDatabaseLogon('sa','sa')
con questa riuscivo a lanciare il report e tutto andava bene.
Nel momento in cui il database risiedeva su un altro pc in rete i soli 2 parametri username e password del suddetto report non erano più sufficienti in quanto avrei dovuto specificare anche nome server e nome db.
Osservando bene il metodo mi sono accorto che era possibile farlo in quanto c'erano due parametri aggiuntivi appunto server e database
,ma appena arrivo all'istruzione export che mi crea il pdf la pagina genera un errore di runtime il seguente:
Unable to connect: incorrect log on parameters.
Questo è il mio problema ...
in realtà se aggiunta un altra variazione ovvero oltre a cambiare il pcserver potrei dover cambiare anche il nome del db ,ma penso che risolvendo il primo risolvo anche il secondo problema

P.s via allego il progetto piccolo(1 pagina ) comprensivo di file rpt e script per creare il piccolo db 1tabella.
più di questo non posso fare per non farvi perdere del tempo.
Vorrei far presente che ho provato ad usare il metodo TableLogOnInfo con le sue proprietà ma resta il problema .

Vi ringrazio anticipatamente!!!!!

Brainkiller Profilo | Guru

Senti, prova a fare così.
Avvia il SQL Profiler sul Database Server. Poi lancia il tuo progetto.
Se c'è un tentativo di connessione sicuramente il SQL Profiler te lo traccia e te lo segnala visto che ti prende tutti gli eventi di logon e tutte le query.
Se lì non comparisse niente significa che il problema è altrove. Se però ti da un errore di invalid credentials forse al DB riesce ad arrivare.
Immagino tu sia sicuro che sa e sa sono una combinazione valida. Sei sicuro ? Riesci a collegarti tramite Query Analyzer ?

Cmq. con il TableLogonInfo dovrebbe funzionare. Mi pare strano che tu abbia questo problema.

Ti consiglio personalmente di non usare in produzione l'utente sa con una weak(debole) password come appunto sa perchè non sei molto al sicuro.

ciao
david

contiello Profilo | Senior Member

Allora sono sicuro delle password
ti ringrazio del consiglio ma in produzione le ho cambiate ...le prove le faccio sulla mia macchina
allora ho utilizzato il sql profiler con questi risultati....(presumo però che tu abbia visto il codice che ho allegato)

allora utilizzando il metodo SetDatabaseLogon('sa','sa') con i soli 2 parametri di login il sql profiler si attiva (premetto che non l'ho mai utilizzato) e mi elenca una serie di "trace" da cui capisco che tutto va bene infatti parte anche il report ...
apppena utilizzo il metodo SetDatabaseLogon('sa','sa','192.0.0.1','db1') impostando anche i parametri relativi alla macchina dove risiede il db ed il nome di questultimo la pagina va in errore.
nel sql profiler non risulta nessuna "trace" rimane vuoto.

la cosa strana è che se effettuo un debug riga per riga del mio codice , l'errore mi viene generato dal metodo export dell'oggetto crystal report,mentre l'istruzione con SetDatabaseLogon va a buon fine!!!

vi prego aiutatemi


contiello Profilo | Senior Member

precisazione table logon info
ho detto nel primo messaggio che ho provato ad utilizzare il logoninfo e che non funzionava lo stesso...
mi sembra meglio però spiegare in che senso non funziona ....
impostando i parametri all'interno del setlogoninfo (cambiando il nome del db) il report non risente di questo parametro e continua a prendere i valori dalla connessione con cui è stato creato.

freeteo Profilo | Guru

ciao,
ti allego 1 esempietto che da me funziona con logoinfo (se vuoi provare a acambiare il nome del db) e con esportazione in pdf.

ti basta mappare 1a dir virtuale su iis e lanciare la pagina
l'esempio legge da access ma anche su sql da me funziona, prova a scaricarlo e dimmi se da te va...

a presto ciao

contiello Profilo | Senior Member

allora ho provato con il codice che mi hai inviato ma è lo stesso ...
in effetti vorrei spiegarvi un attimo il codice che uso io in modo che se ho commesso qualche rrore ve ne accorgiate!

Io comincio ad avere il sospetto che il problema non è nel codice ma bensì nel file crystal report.
Quest'ultimo secondo me non riesce aliberarsi delle impostazioni di creazione ....

adesso mi informo un poò su questo fatto .......
grazie


'**********dichiarazione oggetto Report
Dim crReportDocument As New CrystalDecisions.CrystalReports.Engine.ReportDocument
Dim crExportOptions As CrystalDecisions.Shared.ExportOptions
Dim crDiskFileDestinationOptions As New CrystalDecisions.Shared.DiskFileDestinationOptions
'**********carico il file crystal report
crReportDocument.Load(nomereport)

'*********dichiaro gli oggetti tablelogoninfo e connection info
Dim crTableLogOnInfo As CrystalDecisions.Shared.TableLogOnInfo
Dim crConnectionInfo As New CrystalDecisions.Shared.ConnectionInfo

'*****dichiaro la variabile crtables e crtable rispettivamente la collezione di tabelle all'interno del report ed una singola tabella
Dim crTables As CrystalDecisions.CrystalReports.Engine.Tables
Dim crTable As CrystalDecisions.CrystalReports.Engine.Table

'*****imposto la connection info
With crConnectionInfo
.UserID = Me.txtUsername.Text
.Password = Me.txtPassword.Text
.DatabaseName = Me.txtNomedb.Text
.ServerName = Me.txtServer.Text
End With


ciclo per ogni tabella del report ed associo ad ognuna di esse la connectioninfo ed il logoninfo
crTables = crReportDocument.Database.Tables
For Each crTable In crTables
crTableLogOnInfo = New CrystalDecisions.Shared.TableLogOnInfo
crTableLogOnInfo = crTable.LogOnInfo
crTableLogOnInfo.ConnectionInfo = crConnectionInfo
crTable.ApplyLogOnInfo(crTableLogOnInfo)
Next

contiello Profilo | Senior Member

dimenticavo con access funziona!

freeteo Profilo | Guru

.mmmm...il codice mi sembra giusto, non hai sottoreport giusto?
altrimenti devi settare l e logon anche a quelle tabelle...

contiello Profilo | Senior Member

non ho sottoreport è una tabella semplice se vuoi ti mando tutto il progertto conmpresi script db..
ci metti 5 minuti a provarlo...
te lo allego
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