Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
CystalReport: come stampo una variabile?
domenica 26 febbraio 2006 - 20.01
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
max1850
Profilo
| Junior Member
142
messaggi | Data Invio:
dom 26 feb 2006 - 20:01
Salve.
Utilizzo VB .Net 2003.
Ho creato un report con la procedura guidata di CrystalReport. Ora, mi serve inserire, nello stesso report, anche una variabile stringa tipo "pippo" che varia in funzione a quello che inserisce l'utente. Come la inserisco nel report?
Poi, non riesco a trovare l'opzione per modificare la query sql che la procedura guidata ha utilizzato per creare il report. Dove si trova?
Grazie :)
Max!
freeteo
Profilo
| Guru
6.542
messaggi | Data Invio:
lun 27 feb 2006 - 00:25
ciao,
per quanto riguarda il passaggio di valori al report puoi usare i campi formula o parametro in fase di costruzione e poi valorizzarli da codice, qualcosa del tipo:
mioReport.DataDefinition.FormulaFields["gruppo"].Text = "mio testo";
per quanto riguarda invece il cambiare la query che hai nella costruzione del report quello non èpossibile, se vuoi filtrare i dati lavora con i campi "RecordSelectionFormula" che puoi modificare da codice ma per la lista dei campi quello non lo puoi fare...
ciao
ps: se puoi posta i problemi relativi a queste cose nella stanza "reportistica", cosi teniamo piu in ordine
Matteo Raumer
MCAD ... .net addicted :-)
http://blogs.dotnethell.it/freeteo
max1850
Profilo
| Junior Member
142
messaggi | Data Invio:
lun 27 feb 2006 - 09:42
Ciao. Grazie per la risposta.
In effetti non avevo visto la sezione dedicata ai report...come facciamo a spostare la discussione lì?
Premetto che uso il crystalreport integrato nel vb.net 2003.
Ho fatto qualcosa che mi hai suggerito..ma non ci capisco molto...
Ti riassumo tutto: ho fatto un nuovo progetto in vb con 2 form e 1 report già collegato ad un database access, e funziona tutto perchè ho usato la creazione guidata report
Ora, la prima form ha un bottone che mi apre la seconda. La seconda contiene l'anteprima del report (l'oggetto CrystalReportViewer1) e premendo sull'icona della piccola stampante mi parte la stampa.
Ora, in pratica vorrei fare un report che mi stampa solo 1 record (scelto dall'utente) e non tutta la tabella "fornitori" del mio database.
Per far questo volevo passare il record scelto al report, ma non so se sia la procedura corretta. Si può fare tramite la procedura guidata che ho usato prima?
Come risolvo?
Ciao
Max!
freeteo
Profilo
| Guru
6.542
messaggi | Data Invio:
lun 27 feb 2006 - 18:54
ciao,
non preoccuparti, lasciamo il post tranquillamente qui ma se ti dovesse ricapitare di aprire post su reportistica sa qual'e' la stanza giusta.
Per quanto riguarda quello che devi fare tu, ovvero stampare 1solo record scelto dall'utente, hai 2 strade:
- passare 1a datatable al report con dentro solo 1a riga
- specificare 1 RecordSelectionFormula che ti filtri per quell'Id preciso
Per la 2a devi anche passare le specifiche impostazioni di connessione al database, in modo che sia il report che va a prendersi i dati e poi tu specifichi il filtro da applicare.
La 1a strada a mio avviso è la migliore inquanto filtri 1a serie di dati tu e te la cavi con meno codice:
Dim mioreport as new ReportdìDocument
mioreport.Load("c:\....\.\...\report.rpt")
mioreport.Database.SetDataSource (miatabella )
dove miatabella l'hai riempita con 1record solo
Prova a darci 1occhiata,ciao
Matteo Raumer
MCAD ... .net addicted :-)
http://blogs.dotnethell.it/freeteo
max1850
Profilo
| Junior Member
142
messaggi | Data Invio:
mer 1 mar 2006 - 20:31
Ciao!
Allora ho risolto così: quando l'utente selezionava il record da stampare lo inserivo in un database temporaneo e stampavo poi quel database che conteneva solo quel record!
Così la cosa è più veloce! ;)))
Grazie dell'aiuto!
Max!
freeteo
Profilo
| Guru
6.542
messaggi | Data Invio:
gio 2 mar 2006 - 00:27
Quello che fai tu non è 1 buon metodo dal punto di vista del concetto perche appoggiarsi a strutture temporanee finche è in memoria puo' avere 1 senso, avere 1a tabella temporanea (e ancora di piu 1 database temporaneo) dove scrivere dentro 1 record quando puoi fare 1 filtro tu da query o usando le proprieta' del Report assolutamente sbagliato a mio avviso...
ma questo è 1 consiglio,ok che funziona lo stesso, ma ce differenza tra "programmare" e "far funzionare" !!!
ciao
Matteo Raumer
MCAD ... .net addicted :-)
http://blogs.dotnethell.it/freeteo
max1850
Profilo
| Junior Member
142
messaggi | Data Invio:
gio 2 mar 2006 - 09:50
Ciao!
Ho notato che ieri ho scritto molto "velocemente".
Ho fatto così: ho creato una tabella nel mio database, la quale contiene solo il record che l'utente seleziona per stamparlo. Quindi il mio database ora conterrà tutte le vecchie tabelle più questa nuova, che ha solo il compito di agevolare la stampa di crystalreport. Così, tramite una query seleziono il record e CrystalReport lo stampa. La query la faccio creare dalla procedura guidata di crystalreport ;)
Che ne pensi?
Ciao
Max!
freeteo
Profilo
| Guru
6.542
messaggi | Data Invio:
gio 2 mar 2006 - 19:19
ciao,
rimango dell'idea che puoi lavorare con la query da codice o filtrando sul report come ti dicevo prima...
cmq fai come vuoi se a te va bene questa soluzione...anche se io come "programmatore" te la boccerei
ciao
max1850
Profilo
| Junior Member
142
messaggi | Data Invio:
gio 2 mar 2006 - 21:10
Ciao!
La mia soluzione mi è venuta così, come prima idea, ma non dico che sia quella giusta anche se funziona! ;)
Se dici che è meglio adottare la tua "impostazione" cercherò di farlo! ;)
Però dobbiamo procedere poco per volta, perchè non ho capito molto bene...
Innanzitutto vediamo come passare una semplice variabile stringa dalla form in VB al crystalreport:
1) Apro il report (creato con la procedura guidata di crystalreport)
2) Dal menù a sinistra clicco su "Campi Formula" e uso Nuovo. Do il nome e poi mi si apre l'Editor elle formule. Qui cosa ci metto?
3) Poi, nella form in VB dalla quale devo passare la variabile cosa scrivo?
Scusami se ti chiedo una procedura "dettaglita" ma sono alle prime armi...
Ciao
Max!
freeteo
Profilo
| Guru
6.542
messaggi | Data Invio:
gio 2 mar 2006 - 22:12
ciao,
allora quello che mi chiedi tu se è generico per avere 1campo con dentro del testo che metti tu da codice allora devi fare cosi':
- crei il campo formula come hai visto e dentro non ci scrivi niente
- da codice ci arrivi:
mioreport.SetDataSource(miatabella)
mioreport.DataDefinition.FormulaFields["miaformula"].Text = "ecco qui il mio testo"
dove mioreport è il nome del report tuo.
Se invece vuoi filtrare i dati che gli passi per 1 campo che hai a codice:
mioreport.DataDefinition.RecordSelectionFormula[0] = "{db.miocampoid} = 123"
oppure gli setti il datasource con 1a tabella che dalla query risulti il record che vuoi tu:
mioreport.SetDataSource(miatabella)
prova in questi modi...ciao
Matteo Raumer
MCAD ... .net addicted :-)
http://blogs.dotnethell.it/freeteo
max1850
Profilo
| Junior Member
142
messaggi | Data Invio:
gio 2 mar 2006 - 23:44
Ciao!
Ho provato in tutti i modi ma non va.
Forse è meglio fare un esempio specifico. Non trattiamo i database, ma solamente il semplice passaggio di una stringa!
Allora..procediamo passo-passo:
1) ho creato un campo formula nel mio report.
2) L'ho chiamato "ProvaMax".
3) Poi all'interno non ci ho messo nessuna formula, e tramite trascinaento l'ho piazzato sul mio report (nell'Intestazione Pagina).
4) Piazzandola lì, ora ha il nome "@ProvaMax".
Poi, in una form quasiasi del mio progetto ho scritto:
'Creo una istanza del mio report
Dim rptMax As New CrystalReport1
'Gli passo la stringa da stampare
rptMax.DataDefinition.FormulaFields("ProvaMax").Text = "ecco qui il mio testo"
ma non va. Ho provato anche a metterci le parentesi quadre come hai detto tu e in altri tanti modi ma questo è l'unico che non mi da errori di sintassi. Però quando vedo l'anteprima (tramite un CrystalReportViewer inserito in una form) la variabile non c'è!
Come mai?
Ciao
freeteo
Profilo
| Guru
6.542
messaggi | Data Invio:
ven 3 mar 2006 - 19:47
18_WindowsApplication1.zip
ciao,
scusami per la fretta mi sono dimenticato di dirti che devi aggiungerci anche gli apici altrimenti lui si aspetta il nome di 1campo o qualche altra formula, infatti se lo facessi a design time metteresti "mio testo" e poi salvi la formula e lui prende anche i doppiapici...
Ti manca di digli appunto di mettere come testo anche i doppiapici ovvero cosi'
mioreport.DataDefinition.FormulaFields("miaformula").Text = Chr(34) + "ecco qui il mio testo" + Chr(34)
scusami.
Cmq ti ho allegato anche 1 piccolo progettino che fa questo, se vuoi darci 1occhiata io lho creato sotto la dir c:\progetti tmp\ ma tu basta gli cambi il path alla stringa
ciao
ps:le parentesi quadre erano perche avevo scritto il codice al volo e in c#
Matteo Raumer
MCAD ... .net addicted :-)
http://blogs.dotnethell.it/freeteo
max1850
Profilo
| Junior Member
142
messaggi | Data Invio:
ven 3 mar 2006 - 21:29
Ciao!
Ti rigrazio molto dell'allegato...mi ha chiarito moltissimi dubbi!
E grazie della disponibilità..finalmente funziona tutto!!!
Ciao
Max!
freeteo
Profilo
| Guru
6.542
messaggi | Data Invio:
sab 4 mar 2006 - 15:18
ottimo, mi fa piacere...
a presto, ciao
ps: accetta la risposta, cosi' marchiamo il thread come risolto
Torna su
Stanze Forum
Elenco Threads
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 !