Maledetto Crystal Report!!!

mercoledì 07 settembre 2005 - 23.35

Giamp72 Profilo | Junior Member

ciao a tutti e grazie in anticipo a chiunque avrà compassione di me...
eh si.. anche stasera sto facendo tardi a causa della mia ignoranza in materia Crystal Report.
..Veniamo al dunque..

-ho un'applicazione che si interfaccia a un db Mysql

-ho creato un report con crystal report XI e fin qui tutto ok...

-dopo varie ricerche su internet sono riuscito (con il codice che segue) a caricare e lanciare il report:

sub stampa ()
Dim stReport As New CrystalDecisions.CrystalReports.Engine.ReportDocument
Dim login As CrystalDecisions.Shared.TableLogOnInfo
Dim sPath As String = CurDir()
Dim NomeModulo As String

NomeModulo = "prova.rpt"

stReport.Load(sPath & "\" & NomeModulo)

login = stReport.Database.Tables(0).LogOnInfo
login.ConnectionInfo.ServerName = "MYDB"

stReport.Database.Tables(0).ApplyLogOnInfo(login)
Anteprima.ReportSource = stReport

Anteprima.RefreshReport()
Anteprima.ShowFirstPage()
end sub


A questo punto iniziano i miei 2 problemi:

1) come faccio a specificare una query di selezione dei dati???? L'unico modo che ho trovato e che funzionicchia è:

stReport.RecordSelectionFormula = tabella.campo} = valore"

questo però non mi piace per via di questa sintassi assurda, e la mia necessità di poter pilotare anche gli
ordinamenti... mi aspettavo che :

stReport.Database.Tables(0).SetDataSource "select * from tabella where campo = valore"

avesse qualche effetto.. ma niente...



2) come faccio a passare un campo o una variabile al report?? mi spiego: se devo stampare qualcosa che non è dentro
al db, come faccio?? supponiamo che devo stampare un'immagine il cui nome + path non stanno su db, come devo
fare??

chiunque mi darà risposta o le dritte per risolvere questi due problemi sarà il mio salvatore e godrà della mia stima in eterno...

bye bye


totti240282 Profilo | Guru

per il primo problema hai pensato a riempire un dataset e passarlo al report ???

per il secondo problema esistono i parametri,se vuoi un esempio te lo passo ciao.

C'è solo un capitano !!!!!!

Giamp72 Profilo | Junior Member

intanto grazie per la risposta..

Per il primo problema, che come dicevo, potrei risolvere con le formule, vorrei che chi fa il report, abbia a disposizione la possibilità di pescare i campi dal db, ed io vorrei poter passare run-time la query di selezione.. se io passo un dataset, come dici tu, come dovrei fare?? che vincoli possono esserci? hai qualche esempio semplice?
In ogni caso, mi pare davvero strano che io possa passare le formule, e sia per forza CR che si ricalcola la query di selezione (perchè alla fine è quella gli che serve per estrarre i dati...)

in merito al secondo problema sono riuscito ad attivare i parametri e a passarli.. anche se mi si apre il problema dell'immagine.. mi spiego: passo su un parametro un path e un nome file jpg, dentro al modulo ho una casella immagine ma quest'ultima non viene aggiornata.. la cosa è strana perchè se faccio una preview da dentro CR XI mi chiede il valore per il parametro, lo digito, e nel report carica l'immagine passata.. mi sembra quasi manchi un richiamo ad un "ricalcolaReport" o qualcosa del genere..



Giamp72

astroman Profilo | Junior Member

Ho già sbattutto (e fortemente) la testa contro questo problema e ho risolto egregiamente (a mio avviso...) il problema.
Tutti i riferimenti li trovi qui, soprattutto il link a un sito dove ti spiega step by step come creare un dataset partendo da una query e la generazione di un file xsd successivo

http://www.dotnethell.it/forum/messages.aspx?ThreadID=4415

NB: è un programma windows form o no?

Ti allego un file trovato(con molta fatica) di spiegazione per il deploy di cristal report e windows form / asp.net.
In ogni caso ti anticipo che in fase di release devi escludere dal progetto il file fisico rpt e dagli dei riferimenti assoluti a livello di programma.

Spero che ti possa servire.
Ciao

Giamp72 Profilo | Junior Member

grazie mille per la tua risposta anche se per il deployment in realtà avevo già "bestemmiato" la scorsa settimana arrivando alla soluzione.. ed anche il documento che mi hai allegato lo avevo scovato anche io..
quanto ai miei problemi, avevo già letto il post chemi hai consigliato, ma a dire la verità non si capisce moltissimo su come fare.. servirebbe un elenco di passaggi step by step per creare il repot di una tabella di db qualsiasi..
Cioè:
nome dbOdbc = MyDb
nometabella = MyTab
query = "select * from mytab where campo=valore"

..e mò!?!?
supponiamo voglia stampare campo2 e campo 3 su un report?
che devo fare?


Mi sa tanto che dovrò rassegnarmi all'uso del set selection formula..

Giamp72

astroman Profilo | Junior Member

Scusa non ho capito molto il problema...in ogni caso con quello scritto nell'articolo che t'ho citato ho fatto un report di 60.000 record, filtrato e tutto...quello è un esempio, logico...un pò di farina del proprio sacco bisogna sempre mettercela, ma proprio poco poco (io c'avrò messo si e no 5 righe di codice in più).
Qual'è il tuo problema che non capisco?Mi puoi dare ulteriori informazioni?
In ogni caso ti premetto che bisogna creare da Visual Studio il file RPT del report di cristal e collegarlo al dataset che tu hai creato.
Manca di qualche particolare quell'articolo: li si dice semplicemente "cambia il nome al dataset"...fosse facile!:D
Bisogna prima rinominare il file fisico da Visual Studio e poi entrare nel sorgente e rinominare tutti i riferimenti al nome della classe a mano.
Per far poi vedere il dataset al progetto devi fare un rebuild e poi Visual Studio studio lo vede e referenzia correttamente.
Per gl'altri tuoi problemi non li ho capiti scusami...

Giamp72 Profilo | Junior Member

quello che vorrei tanto, ma che non riesco a trovare è un esempio in vbnet, funzionante, di un report collegato a un db con possibilità di selezione sql da codice.. tutto qui..
con un esempio del genere potrei risolvere i miei problemi. in realtà tutto quello che sono riuscito a fare (ivi compresi i modi di caricamento e di eseguzione del report), è frutto di prove che mi hanno fatto perdere un sacco di tempo e che non mi danno la certezza di aver affrontato la cosa nel modo giusto..
insomma se anche dovessi riscrivere codice e/o report pazienza.. l'importante per me è capire o trovare il giusto metodo di utilizzo di CR...


Giamp72
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5