Newsgroup: it.comp.lang.visual-basic
Titolo: Come "passare" una query SQL a Crystal Report ?

Come faccio ad utilizzare una query sql come fonte di dati per un report di
CR ?
Si deve inserire nel file .rpt oppure si puo' creare il recordset
dall'applicazione VB e dopo chiamare CR ?
Sto facendo confusione ... ???
Grazie
Aldo

Ciao, in genere il metodo migliore per stampare dati che si trovano su un DB
(come credo sia il tuo caso) è realizzare una o più tabelle con i dati
richiesti (e quindi precedentemente recuperati e "filtrati" se richiesto) e
poi lanciare un .rpt che sia collegato a tali tabelle.
In pratica la query la fai con VB, popoli il DB locale e poi lanci la pagina
realizzata con CR e che tira su semplicemente tutti i dati presenti nella
tabella "provissoria" di stampa.
Byez
--
Tango
www.af.mil
ICQ: 35463931

 poi lanciare un .rpt che sia collegato a tali tabelle.
Dunque... correggimi se sbaglio...
mi stai consigliando di creare un recordset attraverso una query sql e poi
lanciare un rpt creato in precedenza sulla base dei campi che la query
restituira' ?
Se non ti chiedo troppo, come si fa "tecnicamente" ad agganciare il file rpt
al recordset generato dalla query ?
Grazie
Aldo

 restituira' ?
no... ti sta consigliando di creare "fisicamente" nel database una tabella
sulla quale poi baserai il rpt
questa tabella conterrà di volta in volta solo i records da stampare
e la potrai popolare tramite delle query di inserimento dall'interno del
codice vb prima di lanciare il report.
Un altra soluzione è quella di generare il report utilizzando la query
"scolpita"
nel report. Da Visual basic è poi possibile impostare le proprietà
"SQLQuery" del controllo CR
per impostare di volta in volta condizioni where diverse
Ciao
Enrico

 "SQLQuery" del controllo CR per impostare di volta in volta condizioni
where diverse
E' chiederti troppo se mi puoi fare un esempio di codice su come lanciare un
report di CR da un'applicazione VB ?
Grazie
Aldo

per passare dei filtri al report che ai creato utilizza questo esempio:
    Report1.SelectionFormula = "{movimenti.dataoperazione} >= Date(" & Mydalla &
") And {movimenti.dataoperazione} <= Date(" & Myalla & ")"
    Report1.Action = 1
dove 1 è a video e 2 per la stampante
Ciao
Aldo ha scritto:


 dove 1 è a video e 2 per la stampante
Grazie per le dritte.
Ho qualche problema con il filtraggio sulle date.
Continua a darmi errori di sintassi.
In che formato vanno scritte ?
Le variabili che contengono le date devono essere di tipo testo ?
Potresti farmi vedere come si scrive una riga di selezione con i seguenti
parametri ... :  ?
nome tabella.campo = camere.Data_Alloggio
Data da filtrare = 10/05/2001
Non esiste la guida in linea per tutte le proprieta' ed i metodi dei
controlli CR ?
Ho provato a selezionare con F1 il controllo di CR ma mi viene segnalato che
la guida non e' presente.
Boh....?!?!
Grazie
Ciao
Aldo

 CR ?
Io utilizzo una filosofia diversa rispetto a quella che ti hanno consigliato
e che a me (magari mi sbaglio) sembra più versatile soprattutto in una
situazione client/server.
Premetto che uso VB6 SP5, ADO 2.5, CR7.
Bisogna agire in modo lievemente diverso se usi un report disegnato
all'interno di Vb come finestra di progettazione o se usi un file rpt
esterno. Ti descrivo il primo caso.
1. La scelta è quella di utilizzare tra le scelte di database possibili
"Dati attivi (solo per definizioni campi)". Per farlo si deve creare un
piccolo file con estensione ttx che contiene la descrizione dei campi del
recordset; nella documentazione di Crystal Report è spiegato come farlo. In
particolare puoi utilizzare la seguente funzione:
Declare Function CreateFieldDefFile Lib "p2smon.dll" (lpUnk As Object, _
    ByVal FileName As String, ByVal bOverWriteExistingFile As Long)  As Long
dove lpUnk è il recordset Ado di cui vuoi generare la descrizione e FileName
è il file ttx che vai a generare. Fai attenzione che sbaglia a creare i
campi Memo di Acces che vannop corretti a manina.
2. Dal report scegli Aggiungi Database al Report ... Tabelle SQL ... Dati
attivi (solo per definizioni campi) e scegli il file ttx precedentemente
creato. A questo punto hai i campi per lavorare sul report.
3. Quando devi lanciare il report apri normalmente il recordset Ado
(ovviamente i campi devono coincidere con il file ttx),  crei un'istanza del
report e poi gli assegni il recorset in questo modo
rptReport.Database.Tables.item(1).SetPrivateData 3, adoRs
L'istruzione va poi ripetuta per le altre istanze se ci sono più recordset.
Il report può poi essere visualizzato con un controllo CRViewer.
Si può fare anche con report esterni, se ti interessa ti posso poi indicare
le differenze.
In questo modo puoi sfruttare tutta la complessità di sql senza dover
"salvare" le query da nessuna parte.
Ciao
--
Lawrence Lebowsky
#marcone#@#sidsrl#.it

Ciao, 
siccome anche io preferisco lavorare con CRPEAuto, 
ho letto il tuo messaggio del 02/05/2001 
----------------
Io uso CR7 e non so se il consiglio funziona anche per il 6. Usando un
Report all'interno del progetto VB come finestra di progettazione si
può
disegnare un oggetto immagine o meglio un oggetto Ole; poi da codice
nell'evento Format della sezione interessata:
 Set oleImmagine.FormattedPicture = LoadPicture(FileImmagine)
dove fileImmagine è il nome del file dell'immagine interessata.
--------------
volevo chiederti come fai ad accedere all'evento format per passare un
immagine, cioe' dove trovo
"...poi da codice
nell'evento Format della sezione interessata..."
Grazie 
M. Garcia

 controlli CR ?
devi cercarla dentro a CR


> nell'evento Format della sezione interessata..."
Il report deve essere gestito all'interno del progetto come finestra di
progettazione VB. Passi nel modulo così come in una form e scegli la sezione
dove c'è l'immagine e l'evento Format (c'è solo quello).
Se invece usi il report esternamente cioè come file rpt la cosa non è
possibile (mi è stato anche confermato dalla Seagate) e l'unica maniera è
creare un oggetto Ole collegato che mi mette un sacco di tempo a caricarsi.
--
Lawrence Lebowsky
#marcone#@#sidsrl#.it

Grazie Lawrence.
M. Garcia


 dove Mydalla= 2001/05/10
Non so se e' il mio Crystal Report che ha dei problemi, ma come lo hai
scritto tu non funziona.
Per farlo funzionare, ho dovuto sostituire le "/" con le "," : mydalla =
"2001,05,10"
Continuo ad approffitare della tua pazienza.....
e se volessi fare in modo che la variabile mydalla venisse utilizzata come
intestazione del report , come faccio ?
Ho provato con la proprieta' BoundReportHeading ma non succede niente.
Grazie
Aldo