Login Prompt sempre attivo

sabato 01 dicembre 2007 - 15.31

endry82 Profilo | Newbie

Salve a tutto il forum, sono nuovo, mi presento.

Sono Andrea dalla provincia di Bari, sono alle primissime armi con visual studio 2005. Ho creato un'applicazione formata da una form che lancia un report. Nonostante passo via codice il nome del database, la pw e lo user quando lancio il report nel CrystalReportViewer viene fuori il login prompt per l'accesso ai dati. Come fare ad ovviare a questa cosa? Ho effettuato ricerche qui e su altri forum ma nulla....

Vi lascio il codice scritto:

Dim lNomeReport As String oRpt = New ReportDocument() lNomeReport = "C:\ReportGestioneDiocesi\ElencoEnti.rpt" oRpt.Load(lNomeReport) oRpt.SetDatabaseLogon("sa", "dbad") Dim logonInfo As New CrystalDecisions.Shared.TableLogOnInfo() Dim table As Table For Each table In oRpt.Database.Tables logonInfo = table.LogOnInfo logonInfo.ConnectionInfo.ServerName = "SADN" logonInfo.ConnectionInfo.DatabaseName = "CIAULA" logonInfo.ConnectionInfo.UserID = "sa" logonInfo.ConnectionInfo.Password = "dbad" table.ApplyLogOnInfo(logonInfo) Next table CrystalReportViewer1.ReportSource = oRpt

Vi ringrazio in anticipo per le risposte.

Andrea Casucci
www.andreacasucci.it

freeteo Profilo | Guru

ciao,
potrebbe essere un problema relativo alla proprieta' "location" che ti rimane puntata al database con cui hai costruito il report.
Guarda questo thread:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=5303

come vedi da li, alla proprieta' "Location" della "table" su cui stai girando, viene tolta il database come prefisso (la funzione substring va a togliere il "miodb" da un "miodb.tabella")

ciao.

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

endry82 Profilo | Newbie

Grazie per la dritta, vedrò il link che mi hai consigliato di leggere.

Per adesso ho risolto saltando in pratica la sezione di passaggio dei settaggi... Funziona..

ma ripeto, mi vedrò il link che mi hai passato cosi da capirci di più.

Andrea

freeteo Profilo | Guru

ok,
penso che il tuo sia cmq un problema che potrebbe ripresentarti quando quando lo distribuirai, eventualemnte siamo sempre qui per dubbi

ciao.

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

endry82 Profilo | Newbie

Grazie ancora.

Il problema si presenta(va) in effetti quando cerco di provare l'applicazione su un'altra macchina. Togliendo quei riferimenti funziona, non mi chiede piu il logon al database.

Andrea

endry82 Profilo | Newbie

come non detto.. il problema si ripresenta eccome....

in effetti se ditribuisco il report mi si ripresenta.

help...

ho provato a modificare il settaggio del db come fatto nel post che mi hai consigliato ma nulla...

freeteo Profilo | Guru

ciao,
se puoi posta una parte di progetto di esempio, oppure il codice che usi, che cosi' posso capire meglio dove sta il problema...
Grazie.

ciao.

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

endry82 Profilo | Newbie

Problema (in apparenza) risolto.

vediamo di ricapitolare...

prima di tutti ribadisco di essere alle prime armi con la programmazione .NEt

L'applicazione fatta, oltre a visualizzare dei report, contiene delle anagrafiche. Quindi ci son videate che si collegano ad un db SQL Server 2000 per fare le classiche operazioni di lettura e scrittura.

La connessione al db l'ho fatta creando in automatico un DataSet unico all'interno del quale ci sono dei datatable. La connection string viene creata cosi in automatico.

Faccio girare l'applicativo su una macchina test, tutto funziona, SENZA avre creato nessun driver ODBC che punta al db del server. E qui, prime perplessità.

Passo alla fase della reportistica, sul pc dove programmo tutto funziona. Pc dove però era creato l'odbc. Porto anche la fase della reportistica sul pc che fa da test, e si presentano i problemi di sopra.

Smanetto, smanetto e chiedo aiuto a voi. In seguito mi accorgo che sul pc che fa da test non è creato il driver ODBC, lo creo. TUTTO FUNZIONA.

in pratica il codice che ora è preseente nella fase di stampa è il seguente:

Private Sub frmStampa_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim lNomeReport As String ' Lancio la stampa oRpt = New ReportDocument() lNomeReport = "C:\ReportGestioneEnti\" & frmMain.pNomeReport oRpt.Load(lNomeReport) oRpt.SetDatabaseLogon("sa", "dbad") If frmMain.FormulaReport <> "" Then CrystalReportViewer1.SelectionFormula = frmMain.FormulaReport End If CrystalReportViewer1.ReportSource = oRpt End Sub

al di la di scrivere in chiaro utente e password, si intende.

A te/voi la palla..... Il problema era la creazione del driver ODBC....


Dato che sono qui per imparare, ho visto che c'è la possibilità di avere report all'interno del progetto, data l'integrazione di Crystal Report in VS. Quali sono i pro ed i contro?

RIPETO: grazie per l'interessamento che hai dimostrato di avere.

Andrea

freeteo Profilo | Guru

>La connessione al db l'ho fatta creando in automatico un DataSet
>unico all'interno del quale ci sono dei datatable. La connection
>string viene creata cosi in automatico.
certo, cmq nel file "app.config" nella root del progetto c'e' scritta dentro la connessione


>Faccio girare l'applicativo su una macchina test, tutto funziona,
>SENZA avre creato nessun driver ODBC che punta al db del server.
>E qui, prime perplessità.
probabilmente lo avevi gia' configurato precedentemente per la parte di anagrafica, oppure usavi una connectiostring diversa...


>Passo alla fase della reportistica, sul pc dove programmo tutto
>funziona. Pc dove però era creato l'odbc. Porto anche la fase
>della reportistica sul pc che fa da test, e si presentano i problemi
>di sopra.
forse il report usava una connessione diversa, l'hai modificato in fase di design


>Smanetto, smanetto e chiedo aiuto a voi. In seguito mi accorgo
>che sul pc che fa da test non è creato il driver ODBC, lo creo.
>TUTTO FUNZIONA.
allora si usava odbc, e per funzionare deve esserci.
Io sconsiglio questo tipo di connessione, ti conviene passare tu da codice i parametri e gestirti tutto dentro al programma, in modo che parte di codice e report peschino sempre dalla stessa sorgente dati e quindi configurata correttamente per una dei 2, sia automaticamente a posto anche per l'altro.


>Dato che sono qui per imparare, ho visto che c'è la possibilità
>di avere report all'interno del progetto, data l'integrazione
>di Crystal Report in VS. Quali sono i pro ed i contro?
Pro:
--------------
- un tool completo di reportistica molto potente ( link tra tabelle, sottoreport, calcoli trasversali ai dati, grafici etc...insomma tutto quello che un tool di questo genere puo' darti ) gia' a disposizione e gratis dentro all'ambiente di sviluppo, e le stampe si sa, per i clienti sono sempre un gran bel biglietto da vistita...


Contro:
--------------
- devi capire bene come funziona, come collegarti al db, come gestire report/subreport/gruppi etc... insomma devi avere skill di crystal (che puoi cercare in libri o tutorial online).
- po di runtime pesantino, mancanza di prestazioni se lo usi su un server web (limitazione introdotto dalla casa, per farsi pagare una licenza aggiuntiva)


>RIPETO: grazie per l'interessamento che hai dimostrato di avere.
nessun problema, spero di esserti stato utile

ciao.

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

endry82 Profilo | Newbie

vedo che la discussione ha suscitato il tuo interesse...

so che il config.xml contiene la stringadi connessione, ovvero:

<connectionStrings> <add name="GestioneEnti.My.MySettings.CIAULAConnectionString" connectionString="Data Source=SADN;Initial Catalog=CIAULA;User ID=sa;Password=dbad" providerName="System.Data.SqlClient" /> </connectionStrings>

che è quella del pc dove sviluppo, che ha un ODBC che punta al server SADN con DNS "CIAULA"

quando ho distribuito l'applicazione ho modificato l'xml Data Source = "pc" (nome del pc test)
(senza aver creato l'ODBC su tale pc) lancio l'applicativo, funziona. Lancio la stampa, nisba.

Allora ho creato l'ODBC che puntava al server "pc" (in pratica lavora in locale) di nome CIAULA: applicativo e stampe funzionante.

Cmq... ho capito quindi dall'esperienza e dalle tue risposte che l'ODBC per le stampe va creato.

La mia domanda riguardante il Crytal Report non è sulle sue funzionalità, smanetto da parecchio su tale sistema di reportistica saggiandone le qualità.

La mia richiesta era rivolta invece più sul fatto di imporatare un report .rpt nel progetto e usare l'oggetto Report Document dalla Toolbox invece di NON importare il report nel progetto ma refernziandolo nel codice cosi come ho fatto io.

In effetti la domanda non era chiara! :-)

Saluti, Andrea

freeteo Profilo | Guru

>so che il config.xml contiene la stringadi connessione, ovvero:
>che è quella del pc dove sviluppo, che ha un ODBC che punta al
>server SADN con DNS "CIAULA"
scusami ma i termini non sono corretti, o almeno per me.
Quello che hai messo tu come connessione è una semplice connessione sql, non usa ODBC che invece significa specificare il driver a livello di stringa di connessione etc... (vedi : http://www.connectionstrings.com/?carrier=sqlserver )
Cmq sia, Crystal è in grado di accedere a sql tranquillamente, e il codice che hai postato tu per settare queste proprieta' di connessione mi sembrava corretto, ma a quanto pare non lo è se non ti si connette (ps: hai impostato anche la "location" corretta? hai dei sottoreport? )


>Allora ho creato l'ODBC che puntava al server "pc" (in pratica
>lavora in locale) di nome CIAULA: applicativo e stampe funzionante.
>Cmq... ho capito quindi dall'esperienza e dalle tue risposte
>che l'ODBC per le stampe va creato.
qui appunto come dicevo prima, non ho capito cosa hai fatto, cosa intendi per ho creato l'odbc? ma il report quando l'hai sviluppato dentro a visual studio, hai scelto "Esperto dAtabase->Create new connection->oledb->Oledb per sql" ? io uso sempre questa e non ho avuto nessun problema, inquanto vai ad usare sicuramente il driver gia' incluso nel framework (piu' precisamente nell'MDAC)


>La mia richiesta era rivolta invece più sul fatto di imporatare
>un report .rpt nel progetto e usare l'oggetto Report Document
>dalla Toolbox invece di NON importare il report nel progetto
>ma refernziandolo nel codice cosi come ho fatto io.
è lo stesso, solo che se fai il "Load" dell'oggetto ReportDOcument ti gestisci tu la "vita" dell'oggetto, cosa che sinceramente preferisco fare a mano per maggior controllo sul codice.
L'altro caso invece si arrangia visual studio a scrivere il codice per te, è lo stesso, ma io preferisco la "gestione manuale"...

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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5