AIUTOOOOOOOO!!!

mercoledì 18 gennaio 2006 - 00.44

Giamp72 Profilo | Junior Member

ciao colleghi ho un problema grosso e purtroppo urgentissimo:

SITUAZIONE:
ho definito una connessione odbc di nome "DB"
ho creato un report con dei campi pescati dalla connessione ODBC suddetta
nel mio codice ho scritto:

Dim stReport As New CrystalReports.Engine.ReportDocument
Dim login As CrystalDecisions.Shared.TableLogOnInfo
stReport.Load("c:\modulo.rpt")

login = stReport.Database.Tables(0).LogOnInfo
login.ConnectionInfo.DatabaseName = "DB"
stReport.Database.Tables(0).ApplyLogOnInfo(login)

'anteprima è un oggetto di tipo crystalreportviewer..
Anteprima.RefreshReport()
Anteprima.ReportSource = stReport
Anteprima.ShowFirstPage()


fin qui tutto ok...

PROBLEMA:
non definisco più la connessione ODBC ma uso una connection string all'interno del mio sw.

sicchè se lancio la procedura riportata,dopo aver eliminato la connessione ODBC di nome "Db",
crystal report mi apre la maschera di definizione del collegamento al database e questo ovviamente non va bene..

la soluzione credo sia ristabilire la connessione al report indicando una StringConnection del tipo
"DRIVER={MySQL ODBC 3.51 Driver};DATABASE=myoDb;OPTION=3; SERVER=LocalHost;UID=root;PWD=giamp;"

mi sono accorto anche che se ho la connessione odbc definita, ed è la stessa usata per disegnare il report, crystal report se la va a prendere automaticamente!! senza che io gliela dia via codice (pquesto perchè nel file rpt si memorizza il nome della connessione....)

Purtroppo non ho il tempo materiale di starea leggermi 100 articoli sull'argomento.. perciò se qualcuno ha idea di come poter risolvere il casino mi scriva anche semplicemente un esempio...

anticipatament grazie!!










Brainkiller Profilo | Guru

>SITUAZIONE:
>ho definito una connessione odbc di nome "DB"
>ho creato un report con dei campi pescati dalla connessione ODBC
>suddetta
>nel mio codice ho scritto:

Ciao Giamp,
prima cosa, non nominare i Thread con titolo de tipo "Urgente!!", "Aiuto!!!" ecc.
In questo modo è più difficile che qualcuno venga a rispondere visto che il termine aiuto è generico e non fa intendere a chi legge la lista dei threads che problema hai da un titolo del genere.

>PROBLEMA:
>non definisco più la connessione ODBC ma uso una connection string
>all'interno del mio sw.

Riguardo il tuo problema per conto mio puoi procedere così. Visto che trattasi di MySQL, effettua la connessione, recupera i dati all'interno di un DataSet, lega il DataSet al Report e apri il Report.

Pasando al metodo SetDataSource del Report la tabel direttamente in questo modo:

>SITUAZIONE:
>ho definito una connessione odbc di nome "DB"
>ho creato un report con dei campi pescati dalla connessione ODBC
>suddetta
>nel mio codice ho scritto:

Ciao Giamp,
prima cosa, non nominare i Thread con titolo de tipo "Urgente!!", "Aiuto!!!" ecc.
In questo modo è più difficile che qualcuno venga a rispondere visto che il termine aiuto è generico e non fa intendere a chi legge la lista dei threads che problema hai da un titolo del genere.

>PROBLEMA:
>non definisco più la connessione ODBC ma uso una connection string
>all'interno del mio sw.

Riguardo il tuo problema per conto mio puoi procedere così. Visto che trattasi di MySQL, effettua la connessione, recupera i dati all'interno di un DataSet, lega il DataSet al Report e apri il Report.

Pasando al metodo SetDataSource del Report la tabel direttamente in questo modo:

SetDataSource(ds.Tables(0))

non ti farà più apparire la maschera di logon.
ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

Giamp72 Profilo | Junior Member

Intanto grazie per l'aiuto, e per la prossima volta mi regolo diversamente, in merito del titolo del Problema: hai sicuramente ragione tu.
ho provato a fare come dici tu, e cioè:

Dim stReport As New CrystalReports.Engine.ReportDocument
stReport.Load("c:\modulo.rpt")

Dim conn As New Odbc.OdbcConnection(sConnessione)
conn.Open()
Dim ds As New DataSet
Dim adapter As New Odbc.OdbcDataAdapter
adapter.SelectCommand = New Odbc.OdbcCommand("select * from tabella", conn)
adapter.Fill(ds)

stReport.SetDataSource(ds.Tables(0))

.. ma il problema permane...
all'avvio del modulo solita maschera di logon..
inoltre se il mio report pescasse dati da più tabelle come dovrei fare??


Giamp72

Giamp72 Profilo | Junior Member

HO RISOLTO!!!
posto la soluzione perchè magari può essere utile ad altri..

Dim stReport As New CrystalReports.Engine.ReportDocument
stReport.Load(sPercorsoStampe & "\" & NomeModulo)
Dim conn As New Odbc.OdbcConnection(ConnectionString)

conn.Open()
Dim ii As Integer
Dim ds As New DataSet

For ii = 0 To stReport.Database.Tables.Count - 1
Dim dtb As New DataTable
Dim adapter As New Odbc.OdbcDataAdapter("select * from " & stReport.Database.Tables(ii).Name, conn)
adapter.Fill(dtb)
ds.Tables.Add(dtb)
stReport.Database.Tables(ii).SetDataSource(ds.Tables(ii))
Next

conn.Close()

in questo caso se il mio report usa più tabelle del database gli passo tutti i dati che gli servono...

NB: Nel mio caso le selezioni sui dati da stampare sono fatte direttamente sul report con dei filtri o utilizzando
variabili che il mio programma passa a CR.


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