PDA

View Full Version : Crystal Report 4.6 & VB6


sal_rob
17-03-2005, 18:36
Ciao ragazzi, dovendo sviluppare una nuova applicazione dove faccio stampe di Fatture e Report, avevo deciso di imparare ad usare Crystal Report con VB6 , ho installato il 4.6(quello sul CD di VB6), ma non riesco a capire come colloquiare tra VB6 e Crystal.

Potete darmi un pò di codice d'esempio dove da VB6 si modifica delle query, delle formule e delle semplici text in Fogli Crystal .


Grazie e Ciao!!!

sal_rob
17-03-2005, 20:44
Ciao,

Per questa sera, mi sconnetto, per favore datemi una mano.

Ci risentiamo domani.

sal_rob
18-03-2005, 11:03
Originariamente inviato da sal_rob
Ciao,

Per questa sera, mi sconnetto, per favore datemi una mano.

Ci risentiamo domani.


Ciao, sono tornato, nessuno può aiutarmi???

sal_rob
18-03-2005, 16:20
Conoscete qualche sito che potrebbe avere quello che mi serve?

sal_rob
22-03-2005, 22:30
Originariamente inviato da sal_rob
Conoscete qualche sito che potrebbe avere quello che mi serve?


Ok, un bel UP, e speriamo che qualcuno mi aiuti.

CIAOOOOO.

Brigante
23-03-2005, 10:50
Non sono un esperto di Crystal Report, l'ho usato pochissime volte, comunque cercherò di darti una mano. Per usare Crystal Report la prima cosa da fare è mettere l'apposito controllo nel Form di VB. Cliccando sul controllo e premendo F4 ti apparirà la finestra con l'elenco di tutte le proprietà del controllo, che comunque potrai gestire anche via codice. Dopodiche apri Crystal Report e clicca su Nuovo -> Report personalizzato; ti si aprirà una finestra di dialogo dove potrai selezionare il database (sorgente dati) in locale, oppure cliccando sul tasto Tabella SQL potrai scegliere di connetterti a qualsiasi database tramite ODBC. Selezionando un database, e quindi una tabella, potrai aggiungere graficamente tutti i campi che ti servono all'interno del report. Il report è suddiviso in diverse sezioni: Titolo, Intestazione, Dettagli, Piè di pagina e Riepilogo; Si intuisce molto facilmente il loro utilizzo. Per vedere il report "in azione" clicca su Anteprima o sull'icona con il fulmine giallo. Nella voce di menù Database trovi varie cose, tra cui Mostra query SQL... che ti è utile per vedere in che modo i dati vengono presentati nel report, puoi anche modificarla per renderla idonea alle tue esigenze. Per passarle dei parametri via codice VB6 devi utilizzare la proprieta SelectionFormula, per esempio: CrytalReportCtrl.SelectionFormula={NOME_TABELLA.NOME_CAMPO}='XXX', dove XXX è un stringa o un numero, dipende dal tipo di campo. Bisognerà impostare anche il nome del file del report nella proprietà ReportFileName, per esempio: CrytalReportCtrl.ReportFileName="C:\MioReport.rpt".
Queste sono le cose di base che puoi fare, ovviamente Crystal Report ti permette di fare tante altre cose, ma non possiamo elencarle tutte ora; comunque tante informazioni le trovi nell'Help di Crystal Report, è in inglese ma c'è tutto.
;)

sal_rob
23-03-2005, 22:18
Originariamente inviato da Brigante
Non sono un esperto di Crystal Report, l'ho usato pochissime volte, comunque cercherò di darti una mano. Per usare Crystal Report la prima cosa da fare è mettere l'apposito controllo nel Form di VB. Cliccando sul controllo e premendo F4 ti apparirà la finestra con l'elenco di tutte le proprietà del controllo, che comunque potrai gestire anche via codice. Dopodiche apri Crystal Report e clicca su Nuovo -> Report personalizzato; ti si aprirà una finestra di dialogo dove potrai selezionare il database (sorgente dati) in locale, oppure cliccando sul tasto Tabella SQL potrai scegliere di connetterti a qualsiasi database tramite ODBC. Selezionando un database, e quindi una tabella, potrai aggiungere graficamente tutti i campi che ti servono all'interno del report. Il report è suddiviso in diverse sezioni: Titolo, Intestazione, Dettagli, Piè di pagina e Riepilogo; Si intuisce molto facilmente il loro utilizzo. Per vedere il report "in azione" clicca su Anteprima o sull'icona con il fulmine giallo. Nella voce di menù Database trovi varie cose, tra cui Mostra query SQL... che ti è utile per vedere in che modo i dati vengono presentati nel report, puoi anche modificarla per renderla idonea alle tue esigenze. Per passarle dei parametri via codice VB6 devi utilizzare la proprieta SelectionFormula, per esempio: CrytalReportCtrl.SelectionFormula={NOME_TABELLA.NOME_CAMPO}='XXX', dove XXX è un stringa o un numero, dipende dal tipo di campo. Bisognerà impostare anche il nome del file del report nella proprietà ReportFileName, per esempio: CrytalReportCtrl.ReportFileName="C:\MioReport.rpt".
Queste sono le cose di base che puoi fare, ovviamente Crystal Report ti permette di fare tante altre cose, ma non possiamo elencarle tutte ora; comunque tante informazioni le trovi nell'Help di Crystal Report, è in inglese ma c'è tutto.
;)


Grazie,
volevo chiederti se è possibile creare delle query con la sintassi SQL (magari abbastanza complesse)

Brigante
24-03-2005, 20:38
Originariamente inviato da sal_rob
Grazie,
volevo chiederti se è possibile creare delle query con la sintassi SQL (magari abbastanza complesse)

Certo! Con SQL puoi creare tutte le query che vuoi e complesse quanto vuoi.
:)

sal_rob
25-03-2005, 00:32
Originariamente inviato da Brigante
Certo! Con SQL puoi creare tutte le query che vuoi e complesse quanto vuoi.
:)


Ciao grazie,
Ma potresti darmi qualche altra dritta, ad esempio:

Io sono riuscito a utilizzare una Query per tutto il report, non si potrebbe impostarne 1 per campo (ad esempio
campo1 -> select * from tabella
campo2 -> select * from tabella2 ecc.)

Come posso passare un valore da Vb a CR (ad esempio Campo3 -> 'CASA NUOVA')

Brigante
25-03-2005, 13:56
Originariamente inviato da sal_rob
Ciao grazie,
Ma potresti darmi qualche altra dritta, ad esempio:

Io sono riuscito a utilizzare una Query per tutto il report, non si potrebbe impostarne 1 per campo (ad esempio
campo1 -> select * from tabella
campo2 -> select * from tabella2 ecc.)

Come posso passare un valore da Vb a CR (ad esempio Campo3 -> 'CASA NUOVA')

No, la query SQL è unica, poi non ha senso scrivere campo1=Select * From tabella o campo2=Select * From tabella2, perchè Select * vuol dire seleziona tutti i records (e tutti i campi) nella tabella, quindi non puoi mettere in un solo campo tutti i campi, ok? Per mettere informazioni di tabelle diverse in campi diversi devi fare una query che ti restituisca dei records prelevati da più tabelle.

Cioè:
SELECT TABELLA1.CAMPO1, TABELLA2.CAMPO1
FROM TABELLA1, TABELLA 2
...

Se vuoi inserire una stringa a tuo piacimento in un campo devi creare una Campo formula (Menù Inserisci -> Campo formula...) gli dai un nome, per esempio MioCampoFormula, poi quando si apre l'editor formula clicchi sul tasto Accetta senza specificare nulla; nel codice VB invece, per puntare questo campo formula devi scrivere CrytalReportCtrl.Formulas(0)="MioCampoFormula='CASA NUOVA'", e dovresti essere a posto. prova. Ovviamente CrytalReportCtrl è il nome del controllo Crystal Report che tu hai scelto. L'istruzione Formulas contiene tra parentesi un indice.

sal_rob
25-03-2005, 20:25
Ciao Brigante

Anzitutto ti ringrazio,
La parte per la stringa fissa funziona, GRAZIE.

Per quanto riguardo la parte di una Query per campo, forse non sono stato chiaro, ma il
select * from tabella era per fare un esempio, ovviamente intendevo una cosa del tipo:
select indirizzo from agenda where ........

Di fatti avrei bisogno di creare una query per campo perchè i dati che devo mettere nel report spesso non sono legati tra loro da un criterio di ricerca comune, ad es:
select campo1 from tabella where codice='A'
select campo2 from tabella2 where anno='2005'
select campo3 from tabella3
select a.campo4 inner join b.campo5 from tabellaA as a inner join tabellaB as b on a.campo=b.campo where a.camporicerca='a'

come vedi anche se questo è solo un esempio esemplificato di quelllo che mi occorre, già così sarebbe problematico riunire il tutto in una sola query.




Comunque grazie per il tuo aiuto.

Sei stato molto gentile.

Ciao e a buon rendere

DanieleC88
25-03-2005, 21:55
Originariamente inviato da sal_rob
Grazie e Ciao!!!
...e venne il tempo in cui Giuseppe disse: "Old!!! :old:".
:ubriachi: :hic:

sal_rob
29-03-2005, 13:25
Originariamente inviato da sal_rob
Ciao Brigante

Anzitutto ti ringrazio,
La parte per la stringa fissa funziona, GRAZIE.

Per quanto riguardo la parte di una Query per campo, forse non sono stato chiaro, ma il
select * from tabella era per fare un esempio, ovviamente intendevo una cosa del tipo:
select indirizzo from agenda where ........

Di fatti avrei bisogno di creare una query per campo perchè i dati che devo mettere nel report spesso non sono legati tra loro da un criterio di ricerca comune, ad es:
select campo1 from tabella where codice='A'
select campo2 from tabella2 where anno='2005'
select campo3 from tabella3
select a.campo4 inner join b.campo5 from tabellaA as a inner join tabellaB as b on a.campo=b.campo where a.camporicerca='a'

come vedi anche se questo è solo un esempio esemplificato di quelllo che mi occorre, già così sarebbe problematico riunire il tutto in una sola query.




Comunque grazie per il tuo aiuto.

Sei stato molto gentile.

Ciao e a buon rendere


Allora mi confermi che la query deve essere unica?


Ciao e grazie!

Brigante
29-03-2005, 14:35
Originariamente inviato da sal_rob
Allora mi confermi che la query deve essere unica?


Ciao e grazie!

Si, la query è unica, almeno lavoricchiando con la versione 4.6 ho capito che è così. Teoricamente però fare un report unico di cose non correlate tra loro ha poco senso, in effetti ogni report dovrebbe riferirsi ad un "argomento" specifico o, almeno, ad argomenti legati tra loro; altrimenti devi fare più di un report.
:)

sal_rob
29-03-2005, 18:02
Originariamente inviato da Brigante
Si, la query è unica, almeno lavoricchiando con la versione 4.6 ho capito che è così. Teoricamente però fare un report unico di cose non correlate tra loro ha poco senso, in effetti ogni report dovrebbe riferirsi ad un "argomento" specifico o, almeno, ad argomenti legati tra loro; altrimenti devi fare più di un report.
:)



Brutta Notizia,
Beh, cercherò di adeguarmi.


Comunque Grazie,
Sei stato molto gentile.

Ciao!