Newsgroup: it.comp.lang.visual-basic
Titolo: [Crystal Report] la mia prima volta...

Ciao a tutti...
Come da oggetto!
Sto utilizzando Crystal Report 8.5 e visual basic 6.
Ho creato un report, ora sto cercando di utilizzarlo nel mio programma. A
tal proposito includo l'oggetto nella form (crystalreport1) e gli do i
seguenti parametri:
CrystalReport1.ReportFileName = App.Path + "\rpt\Op_Clienti.rpt"
CrystalReport1.DataFiles(0) = App.Path + "\Gericevitori.mdb"
CrystalReport1.SelectionFormula = SQLPrint
CrystalReport1.Destination = crptToPrinter
CrystalReport1.Action = 1
Utilizzo il parametro ACTION per far si che mi dia i messaggi di errore in
caso di fallimento... e appunto fallisce! L'errore datomi è questo:
Errore 20500: "Not Enough Memory for Operation"
La mia stringa SQLPrint è questa:
SELECT * FROM Giochi INNER JOIN (Clienti INNER JOIN OperazioniClienti ON
Clienti.Codebar = OperazioniClienti.CodCliente) ON
Giochi.Id_giochi=OperazioniClienti.TipoGioco WHERE
OperazioniClienti.CodCliente='87248807' ORDER BY Data DESC,Ora DESC
La stringa è stata testata con Access e funziona, l'unica cosa che varia nel
programma è la condizione where, che però nel programma funziona
correttamente e mi 'pesca' i dati corretti...
HELP!
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 OperazioniClienti.CodCliente='87248807' ORDER BY Data DESC,Ora DESC
la SelectionFormula vuole solo la clausula WHERE senza tutta la select.
Inoltre i campi vanno racchiusi fra parentesi, quindi:
CrystalReport1.SelectionFormula="{OperazioniClienti.CodCliente}='87248807'"
ciaociao

> la SelectionFormula vuole solo la clausula WHERE senza tutta la select.
E se usassi SQLQuery? Mi dice che non trova il server, perchè devo definire
la connessione sulla proprietà connect giusto? come si fa?
Ho trovato spiegazioni in merito ma usano un DSN, che io non ho!
Grazie mille per avermi preso in considerazione! ;__;


E se usassi SQLQuery?
Per diverso tempo ho usato la SQLQuery anzichč SelectionFormula, ad un
certo punto sono passato al crviewer e la SQLQuery non si poteva piů
usare ... ho dovuto cambiare un mare di filtri.
Morale ... fossi in te non lo farei!
Ciao!

Spiego un attimo che devo fare:
Ho una form dove faccio della ricerca dati; essa mi crea una query sql in
base ai dati immessi e, tramite questa, li cerca nel database per
visualizzarli. Quando clicco stampa, dovrei stampare su un report gli stessi
identici campi, quindi mi tornava utile usare sqlQuery per il fatto che ho
già la query pronta...
Se qualcuno sa darmi un aiutino...!
ciao e grazie!


 ciao e grazie!
beh, nella procedura che genera la query scrivi la clausula where in 2
variabili separate, in modo da avere la giusta sintassi per crystal e per il
database.
ciaociao

 già la query pronta...
io quoto la soluzione di Marg che mi sembra la migliore ed è quella che ho
seguito io in diverse occasioni. Altrimenti, potresti farti una Function che
data una stringa SQL più o meno complessa, ti ritorna la query da passare al
motore di crystal report.
dovresti togliere la clausola SELECT, al posto delle ( e ) mettere le graffe
e così via.....
potrebbe essere una bella idea.....
good coding!!!
-- 
Alletun
Sorry, ask me if you want to get my e-mail!

On Wed, 29 Oct 2003 11:50:09 GMT, 
ski...@iol.it
 (Skini82) wrote:
Oltre a quanto già detto dagli altri, i campi per l'ordinamento nella
proprietà SortField!.
Ciao!

Secondo me è meglio che ti costruisci due stringhe differenti (come ti hanno
già consigliato) del tipo: strSQL che passerai al Recordset e strSQLprint
che passerai al SelectionFormula del CR.
In aggiunta a tutto quello già detto ricorda che le date le devi passare in
questo formato {TuaTabella.TuoCampoData} in Date(yyyy,mm,dd)
Ciao, Vincenzo

 good coding!!!
ciaociao

 questo formato {TuaTabella.TuoCampoData} in Date(yyyy,mm,dd)
Per le date lo sapevo, in quanto ho letto un vecchio post dove Marg lo
spiegava con un buon esempio!
Grazie di tutto ragazzi, ma non funziona ancora!!!
Ora faccio generare la stringa apposita per CR, e le mie righe di passaggio
di parametri sono diventate le seguenti:
CrystalReport1.ReportFileName = App.Path + "\rpt\Op_Clienti.rpt"
CrystalReport1.DataFiles(0) = App.Path + "\Gericevitori.mdb"
CrystalReport1.SelectionFormula = SQLPrint
CrystalReport1.Destination = crptToPrinter
CrystalReport1.Action = 1
SQLPrint, nella mia prova aveva il seguente valore:
{Rpt_DatiCliente.codcliente}='87248807'
(codcliente è un valore stringa, quindi è tra apici)
L'errore è ancora quello: Not Enough Memory for operation!


Ok, ho individuato l'errore, l'ho corretto ma me ne da subito un'altro (o
meglio due!)...
Quello di prima era dato dal fatto che una tabella si chiamava 'DatiClienti'
invece di 'DatiCliente'...
Cmq, ora sembra partire la stampa ma quando ormai mi stavo realizzando
emotivamente mi esce l'errore "L'utente ha interrotto la stampa"... MA NON é
VEROOO!
Su un altro pc, dove ho provato il programma, esce l'errore: "Impossibile
trovare il server SQL"
...shit...


 ...shit...
:)

> prova a mettere Destination=CrptToWindow e guarda cosa fa
Errore: Impossibile trovare il server SQL!
Ma non è che in connect devo specificare una connessione??
se è cosi, come si fa?
ciao e ancora grazie!


 Ma non è che in connect devo specificare una connessione??
Se non specifichi nulla rimane la connessione che hai utilizzato quando hai
creato il report.
Domanda: se  fai una anteprima di stampa direttamente dal crystal funziona?

 Domanda: se fai una anteprima di stampa direttamente dal crystal funziona?
Se entro nel programma di Crystal Report (quello dove crei anche i report,
per intenderci...) e faccio anteprima di stampa, funziona correttamente!


On Thu, 30 Oct 2003 08:24:31 GMT, 
ski...@iol.it
 (Skini82) wrote:
Giusto due tentativi buttati li ... ma che non penso risolveranno il
tuo problema.
Potresti provare ad impostare la DataFiles tante volte quante sono le
tabelle che usi nel report.
E provare anche a fare un LogOnServer anche se il db è access ...
Ciao!


--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Ciao!
Ciao e grazie!



Il fatto che usavi un DSN mi era sfuggito, scusa tanto :-(.
Questo codice
    With CrystalReport1
        .Destination = crptToWindow
        .ReportFileName = mioReport
        .DataFiles(0) = mioDb
        .Action = 1
    End With
nel mio caso funziona perchè ho creado il report usando direttamente
il db. Nel tuo caso temo che tu debba impostare un connessione al DSN
con la proprietà Connect, che ... purtroppo per te non ho mai usato.
Ciao!

Ciao!
Provata e funziona! Tira via DataFiles però.
Ciao!

 Ciao!
Ciao e grazieeeee!


anche io!
Ero rimasto all'uso del DSN anzichè del file.mdb.
A parte ciò, il mio db non aveva password, impostandola ho il tuo
stesso problema e con google ho visto che la soluzione che alcuni
usano e proprio quella di passare al DSN.
Ciao!


Se ancora ti interessa l'argomento. Ho provato ad usare il db con
password e DNS e Crystl32.ocx ... non sono riuscito a connettermi.
Allora ho usato crviewer.dll e librerie annesse ... CR8.5 ActiveX
Designer.
Private mcxaApplication As New CRAXDDRT.Application
Private mcxrReport As New CRAXDDRT.Report
Private Sub Form_Load()
    Set mcxrReport =
mcxaApplication.OpenReport("C:\Temp\Articoli.rpt")
    mcxrReport.Database.LogOnServerEx "PDSODBC.DLL", mioDSN, mioDB,
"admin", miaPWD
 
    CRViewer1.ReportSource = mcxrReport
    CRViewer1.ViewReport
End Sub
Cosě funziona, col DSN purtroppo.
Ciao!