Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Crystal Report

Ciao a tutti.
La mia applicazione utilizza un .rpt creato con Crystal Report 7.0
Ho incluso il .rpt nel kit di installazione.
Non so perchè ma quando dall'applicativo installato lancio il report sembra
che punti sempre al database che gli ho fornito durante la progettazione del
report e non a quello a cui dovrebbe puntare dopo l'installazione.
La cosa strana è che il problema si verifica anche in installazioni su
computer che non sono connessi in rete, quindi che non possono assolutamente
vedere il PC dove risiede l'ambiente di sviluppo.
Un'ultima nota.
Se con Access cancello completamente il contenuto delle tavole del database
e poi eseguo l'applicazione, al lancio del report ......ecco tutti i dati
pronti per essere stampati.
......una cosa è certa, l'applicativo ed il report non puntano ai stessi
dati, ma il report ......da dove li prende ??
Ciao e grazie
Stef

"Steama" <s.a...@ELIMINAMIeis.it> ha scritto nel messaggio
news:xqsP6.10848$8Y1.1...@news2.tin.it...

Guarda i post di ieri (all'incirca verso le 09:37)

Io ho avuto (Varie volte.. Grrrrrrr!!!!!!) Lo stesso problema... perchè mi
dimenticavo tutte le volte di andare in "Database" ---> "Imposta percorso",
poi seleziona la tabella che utilizzi e premi affianco il tasto "Uguale Al
report", devi farlo per tutte le tabelle utilizzate dal Report.
Saluti. MaxCrazy
Steama <s.a...@ELIMINAMIeis.it> wrote in message
xqsP6.10848$8Y1.1...@news2.tin.it...


Guarda i post di ieri (all'incirca verso le 09:37)
si puo' dire tutto, ma non che tu non sia un tipo preciso ;-)
ciao, hal 
(che ha scritto questa riga circa verso le 01:22.47 )

 ha scritto nel messaggio
news:9empeq$71ht$1...@ID-56381.news.dfncis.de...

mmm allora non sei andato a dormire...
:-)
ciao
ugo

Grazie 1000.    Era proprio quello
Stef


mmm, vuoi dirmi che metti SEMPRE i report nella cartella del database?
e se usi Sql Server mi "inzuppi" le cartelle data di report cryrep...?
:)
ciao
ugo

 ha scritto nel messaggio
news:9eu0ph$h7s$1...@pegasus.tiscalinet.it...

Infatti si può mettere i report da una parte e il database da un altra se si
aggiunge da codice l'istruzione:
crystalreport1.datafile(0)=<percorso completo del database>
Ho trovato difficoltà nel caso in cui nel report ci siano dei sottoreport o
il report recuperi dati da diverse query. Ho provato con
crystalreport1.datafile(1)=<percorso completo del database>
crystalreport1.datafile(2)=<percorso completo del database>
ma non va. Sapete dirmi dove sbaglio?
Grazie, ciao
Marco


mmm, non credo che tu possa fare questo usando un ocx.
Devi lavorare sull'oggetto CRPEAuto.
L'oggetto Subreport è un oggetto gerarchicamente figlio dell'oggetto
Sections
devi fare un loop sugli oggetti presenti nel report padre.
Ti posto un pezzetto di una classe che utilizzo normalmente per pilotare le
stampe Crystal Report a runtime (al metodo qui richiamato passo, oltre ad
altre amenità, anche il recordset Ado da usare nella stampa del report e le
info di logon):
    Dim Report As New CRPEAUTO.Report
    Dim ReportDb As New CRPEAUTO.Database
    Dim reportTable As New CRPEAUTO.DatabaseTable
    Dim repView As CRPEAUTO.View
    Dim sectsVar As CRPEAUTO.Sections
    Dim sectVar As CRPEAUTO.Section
    Dim objs As CRPEAUTO.ReportObjects
    Dim subObj As Object 'SubreportObject
    Dim subReport As CRPEAUTO.Report
    Dim SubReportDb As New CRPEAUTO.Database
    Dim subReportTable As CRPEAUTO.DatabaseTable
... omissis...
        Set reportTable = ReportDb.Tables(1)
        With AdoSettings
            If TypeName(rsNew) <> "Nothing" Then
                Set rsAdo = rsNew.Clone
                reportTable.SetPrivateData 3, rsAdo
            End If
            reportTable.SetLogOnInfo "Provider=" & .Provider & ";Password="
& .UserPwd & "User ID=" & .UserId & ";Initial Catalog=" & .Catalog & ";Data
Source=" & .DataSource, .Catalog, .UserId, .UserPwd
        End With
        ReportDb.Verify
        Set sectsVar = Report.Sections
        For Each sectVar In sectsVar
            Set objs = sectVar.ReportObjects
            For Each subObj In objs
                If TypeOf subObj Is CRPEAUTO.SubreportObject Then
                    Set subReport = Report.OpenSubreport(subObj.Name)
                    Set SubReportDb = subReport.Database
                    Set subReportTable = SubReportDb.Tables(1)
                    With subReportTable
                        .SetLogOnInfo "Provider=" & AdoSettings.Provider &
";Password=" & AdoSettings.UserPwd & "User ID=" & AdoSettings.UserId &
";Initial Catalog=" & AdoSettings.Catalog & ";Data Source=" &
AdoSettings.DataSource, AdoSettings.Catalog, AdoSettings.UserId,
AdoSettings.UserPwd
                        '.TestConnectivity
                    End With
                    'SubReportDb.Verify
                End If
            Next subObj
        Next sectVar
... eccetera... eccetera...
Per capirci, qui io assegno direttamente le proprietà di logon a un server
SqlServer dell'oggetto subreport.
Dal momento che il subreport è linkato al report pricipale attraverso dei
field, dopo aver passato al report pricipale il recordset Ado da utilizzare
al posto di quello "originale" del design-time, nonchè le stesse
informazioni di logon, provvedo a passarle anche ai subreport.
La struttura oggetti di Crystal Report, purtroppo non è delle più lineari e
devi SOPRATTUTTO stare attento alle gerarchie fra i singoli oggetti.
Dai un'occhiata e amplia...
ciao
ugo