Newsgroup: it.comp.lang.visual-basic
Titolo: [VB6 +Crystal Reports 8.5]

Saluti a tutto il ng!
    Esco dal lurking per una domanda che sicuramente (!) qui troverà una
risposta...
    Il mio problema è questo: ho dei report (file .rpt) sviluppati con
Crystal Reports 8.5 che devono essere richiamati da una applicazione VB6
(sp5). Fin qui niente di strano, tutto funziona... ho utilizzato il
CRViewer:
     Dim crAPP As New CRAXDRT.Application
     Dim Report As CRAXDRT.Report
     Set Report = crAPP.OpenReport(Nome) ' [Nome] contiene il percorso del
file .rpt
     crV.ReportSource = Report
     crV.ViewReport
     Set Report = Nothing
     Set crAPP = Nothing
Purtroppo i report sono stati realizzati sfruttando una connessione ODBC ad
un database Access 2000; visto che l'applicazione dovrà essere eseguita da
più PC in rete che accedono allo stesso DB, e preferendo evitare la
creazione di una connessione ODBC su ogni postazione (per vari, validi,
motivi), ho cercato di impostare _da_codice_ la connessione al db Access
(sfruttando la connessione ADO al db?), ma non ci sono riuscito. Come si fa?
Suppongo di dover agire su
    Report.Database.qualcosa,
ma mi manca il qualcosa! L'ideale sarebbe riuscire a passare in qualche modo
la stringa di connessione....
    Grazie!
        Giovanni

 qualche modo la stringa di connessione....
Se serve,  Io faccio cosi, e cambio al volo la localizzazione del DB ma la
connessione del report non e' ODBC.
Dim rdApp As CRAXDRT.Application
Dim rpt As CRAXDRT.Report
Private Sub Form_Load()
       Set rdApp = CreateObject("CrystalRuntime.Application.8")
       Set rpt = rdApp.OpenReport(sReportFile)
      CaricaReport sReportFile, sSourceData, bStartFiltro, sFiltroReport
End Sub
Sub CaricaReport(ReportFile As String, SourceData As String, bFiltro As
Boolean, stFiltro As String)
'On Error Resume Next
'Utilizzo una For Each loop per modificare la path del datasource  nella
Reports DatabaseTable Collection.
Dim crxdbtable As CRAXDRT.DatabaseTable
For Each crxdbtable In rpt.DataBase.Tables
    crxdbtable.Location = SourceData
Next crxdbtable
If bFiltro Then rpt.RecordSelectionFormula = stFiltro
CRViewer1.ReportSource = rpt
CRViewer1.ViewReport
End Sub
--
Ciao Stefano
steve...@tiscalinet.it

 End Sub
Grazie mille dei suggerimenti, funziona!! Ora l'unico problema ( :-/ ) è che
se passo il percorso di rete del file rpt che voglio aprire non funziona
(però dir$(nomefile) dice che il file c'è!), mentre se passo il percorso
"solito" (c:\...) trova il file. Any ideas?

 "solito" (c:\...) trova il file. Any ideas?
    In realtą il file sembra trovarlo, perchč la proprietą Title č
corretta... perņ esce un errore di CRViewer, con "File non trovato". Mah!


Sicuro di averlo scritto giusto ?  ;-)
Lo so che sembra una sciocchezza ma questo errore dipende da una corretta
scrittura della path e del nome del file
 es "\\percorsorete\cartella\report\nomereport.rpt
--
Ciao Stefano
steve...@tiscalinet.it

  es "\\percorsorete\cartella\report\nomereport.rpt
    Il percorso è giusto, avevo fatto casino con il db di origine :-/
    Comunque ho scoperto che l'assegnazione della proprietà .location alle
tabelle del report ha effetto se non si cambia il driver di accesso ai dati
rispetto alla creazione del report... mi spiego: io avevo creato il report
attingendo da ODBC, e se cerco di accedere in runtime ad Access, modificando
solo .location, dà errore (giustamente, mi vien da dire!). Se in design
pesco i dati da Access, e a runtime cambio il percorso del db di origine,
tutto funziona :-)
    Grazie dei suggerimenti e dell'aiuto!!
        Giovanni