CrystalReport connessione a Db Access

martedì 10 agosto 2004 - 09.24

Cris Profilo | Newbie

Salve a tutti,
sono un nuovo iscritto, anche se da molto leggo le vostre discussioni.
Arrivo subito al dunque:
La domanda penso sia banale: "Come faccio a passare da codice (intendo nella mia ApplicationForm) la connessione al mio Db (Access) ad un report?"
Il problema nasce dal fatto che il report l'ho gia' creato e al suo interno ho creato la connessione e tutto funziona regolarmente, ma quando la mia applicazione sara' installata, il Db potrebbe trovarsi in un altro percorso, ed ecco che a quel punto mi servirebbe reimpostare la connessione al Db da codice...
Grazie anticipatamente

LeonDom Profilo | Senior Member

Io utilizzo i percorsi nel WebConfig se WebForm o AppConfig se WinForm. E funzionano bene.

Devi aggiungere nella AppConfig:

<?xml version............. etc etc
<configuration>
<appSettings>
<add key="nomeconnessione" value="percorsodatabase"/>
</appSettings>
</configuration>

e da codice lo richiami in questo modo:

Imports System.Configuration 'importi questa classe

dim strConn as string = ConfigurationSettings.AppSettings("nomeconnessione")

e il tutto funziona.

Credo che era questo quello che intendevi

LeonDom

trinity Profilo | Guru

Se usi il controllo OCX di
CrystalReport devi accedere alla proprietà DataFiles e modificarne gli
elementi prima di lanciare la stampa; questa è una matrice che definisce i
percorsi completi di tutte le tabelle utilizzate.

Ex:
Report.DataFiles(0) = "C:\prova1.mdb"
Report.DataFiles(1) ="C:\prova2.mdb"

dimmi però se utilizzi crystal report net

Ciao

Cris Profilo | Newbie

Allora, faccio un po' di chiarezza:
Io sto sviluppando un'applicazione windows (non Web e non ASP.NET) in VB.Net usando Crystal Report .NET, quindi penso che la soluzione propostami da Trinity non dovrebbe fare al caso mio, correggimi se sbaglio naturalmente.
Per quanto concerne invece LeonDom, ti chiedo perdono ma non so cos'e' AppConfig (non credevo di essere cosi' ignorante), quindi se hai la pazienza di approfondire un po' l'argomento te ne sarei davvero grato.
Per ulteriore chiarezza (nel caso non mi sia espresso bene), rispiego il problema:
Io ho gia' creato un report che funziona. All'interno di esso c'e' gia' settata la connessione al Db in Access. Al momento se all'interno di una form, tramite l'oggetto CrystalreportViewer carico il Report esso funziona perfettamente. Il mio problema e' che vorrei riuscire ad impostare dinamicamente da codice la connessione al db (da parte del report), in modo da essere la stessa della form. Questo perche' se in fase di installazione si sceglie un particolare percorso per il Db, le form della mia applicazione continuano a funzionare perche' naturalmente la connessione al db la gestisco da codice, mentre il report non troverebbe piu' il db, perche' userebbe sempre la stessa connessione.
Grazie ancora a tutti

LeonDom Profilo | Senior Member

Sono un "Novello" però ho avuto un problema simile sulle connessioni, e cioè: se installavo su diversi PC dovevo poter cambiare i parametri per la connessione rispetto al server.
Se in un progetto fai ADD --> ADD NEW ITEM --> Application Configuration File -- inserisci un file di nome App.Config che sarebbe un file xml su cui puoi impostare le tue configurazioni.
Nel modo in cui ti dicevo prima. Dopodiché importando la Classe System.Configuration puoi dare ad esempio ad una str il percorso che hai impostato nel file App.Config ed il gioco è fatto.
Non l'ho provato con CrystalReport, credo sia possibile, tu da codice devi impostare una var stringa che gestisci esternamente sul file App.Config, quindi il bello è che non dovrai toccare più il tuo codice per la connessione.

Fammi sapere se non sono stato chiaro.

LeonDom

Cris Profilo | Newbie

Ti ringrazio tanto, ma mi comincia a sorgere qualche dubbio...
Allora grazie a te ho scoperto...come creare e configurare un AppConfig (e questo l'ho fatto), dopodiche' ho qualche difficolta' ad importare la classe (perche' mi da' errore nell'imports), ma il mio problema non penso sia questo, quanto l'obiettivo di tutto il discorso...
Ho capito che seguendo la tua soluzione arrivo ad avere una stringa standard memorizzata da qualche parte che posso sempre utilizzare (in qualsiasi form) per impostare il mio percorso (io in realta' questo problema l'avevo risolto scrivendo nel registro), ma il mio vero problema non e' questo, quanto la possibilita' di settare la connessione in un report. Cioe' la vera difficolta' che sto avendo e' dovuta al fatto che non trovo documentazioni o quant'altro per scoprire quale cavolo di proprieta' devo settare e secondo quale sintassi!!!
In conclusione la domanda e':
Dato per assodato un percorso che io conosco all'interno di una form, come faccio da questa form a reimpostare nel report la sua connessione al db (ribadisco gia' esistente)?
Mi rendo conto che forse non sono chiarissimo percio' se puo' essere utile posto del codice o quant'altro, non so chiedetemi voi e qualsiasi cosa possa dire o scrivere per rendere piu' esplicito il concetto sara' fatto.
Grazie ancora a tutti ed in particolare a LeonDom e resto in attesa...

Scusate ma mentre rileggevo quanto scritto mi e' venuta in mente una cosa che a questo punto vi giro ed in particolare la giro a LeonDom:
Non e' che posso impostare questa benedetta connessione in modo dinamico (e quindi con App.Config) da dentro il report stesso?Ma se si, come?

LeonDom Profilo | Senior Member

Non so come si imposta la connessione per il report in questione, però di solito si tratta di una stringa, quindi una volta impostata nell' App.Config è comunque una stringa. (Credo... ditemi se sto dicendo una c***ta)
Per quanto riguarda il problema dell'Imports System.Configuration, chiedo venia ho saltato una parte devi aggiungere anche il Reference
Add Reference --> nel tab .NET si chiama System.Confiuration..... qualcosaltro non ricordo bene.

E vedrai che funzionerà.

LeonDom

Cris Profilo | Newbie

Veramente gia' l'avevo aggiunto (dovrebbe essere System.Configuration.Install) ma non va ugualmente (mi sottolinea la parola chiave imports...) comunque ripeto grazie tante e a questo punto aspetto qualche altro buon samaritano come te che mi risolva il problema del report...

trinity Profilo | Guru

a questo punto Cris sapendo che stai utilizzando vb net io ti consiglio di crearti un Dsn di sistema ed impostare l'host come localhost, saprai che a questo punto se il database al report glielo fai riconoscere tramite dsn se tu cambierai percorso del db, al report non succederà nulla.

ciao

Cris Profilo | Newbie

Grazie Trinity, mi sembra un'ottima idea,ti faro' sapere se tutto e' andato bene. Unico mio rammarico e' il fatto che non mi sembra possibile che non si possa gestire una cosa cosi' ovvia via codice...mah!
Cmq intanto grazie a tutti vi terro' aggiornati

trinity Profilo | Guru

Di niente, sono a disposizione.

Ciao

Cris Profilo | Newbie

Ciao Trinity e ciao a tutti, ti confermo che tutto e' andato a meraviglia grazie alla soluzione che mi hai dato tu. A questo punto, mi chiedo pero' un'altra cosa:c'e' un modo, che tu sappia, per includere nel setup il dns da me creato?o cmq esiste un modo per generare un setup della mia applicazione che contenga tutto (compreso CrystalReport) e che crei automaticamente il dns nel client in cui viene installato?
Grazie,
Cris.

trinity Profilo | Guru

Ciao Cris,
per quanto riguarda il setup che contenga il file di crystal report, non c'è problema, ti dirò di più, ho creato un'articolo che dovrà essere pubblicato sul forum ora non so se sotto la voce articoli o tips & tricks cmq questo articolo parla di come creare un setup in vs net e quindi ti potrà essere utile. Per quanto concerne i dsn io ho creato un form nel< progetto che genera in automatico i dns a mio piacimento. ti potrei postare il codice se lo vorrai.

Ciao
Fabio

Cris Profilo | Newbie

Sei un grande!!! Se puoi postarmelo mi fai una grandissima cortesia. Dimmi tu se serve la mia mail.
Grazie ancora

trinity Profilo | Guru

Cris, mi trovo ancora in ferie rientro in ufficio il 1 settembre, mandami eventualmente la tua email e ti posterò il codice.

Ciao
Fabio

Cris Profilo | Newbie

Grazie tante.
a mia e-mail e' crcorso@tiscali.it.
Grazie ancora

trinity Profilo | Guru

Cris,
il progetto per la creazione dei DSN te l'ho inviato alla tua casella e-mail.

Fammi sapere se è tutto ok

Ciao
Fabio

Cris Profilo | Newbie

Grazie di tutto.Io sono stato fuori e quindi non ho potuto provare nulla.
Quando avro' modo di farlo ti faro' sapere.
Grazie ancora.

trinity Profilo | Guru

Di nulla non ti preoccupare sono a disposizione per ogni esigenza

ciao e buon lavoro
Fabio
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5