Controllo parametro XML e stampa da file di testo

lunedì 23 giugno 2008 - 14.45

nihira Profilo | Newbie

Salve a tutti.
Sto lavorando ad un report che carica un'XML come base dati.
Quello che dovrei riuscire a fare, è la gestione condizionale di un parametro contenuto in un tag.
Mi spiego meglio: se quel parametro è "C" deve stampare una frase; se il parametro è uguale ad "N", deve stamparne un'altra, e in tutti gli altri casi, compreso il fatto che un tag può anche non contenere nulla, stampa, o meglio non dovrebbe stampare niente.
Tutto questo, se è possibile, dovrebbe essere stampato all'interno di un box di testo, e quindi gestito dinamicamente, nel senso che non debbono essere prodotte righe bianche nel terzo caso prospettato.
A rendere le cose ancora più difficile, mi è stato richiesto di caricare tali frasi da file di testo, un file per ogni frase da poter cambiare in qualsiasi momento senza toccare minimamente il report, che quindi andrebbe caricato (il testo) e stampato.
Non so neanche se la cosa sia fattibile... sto veramente in alto mare.
Grazie mille a chi riuscisse a darmi una mano!

freeteo Profilo | Guru

>Salve a tutti.
>Sto lavorando ad un report che carica un'XML come base dati.
ok, presumo sia un report Crystal, e ti rispondo per quello, eventualmente correggimi se parli di SqlReporting


>Quello che dovrei riuscire a fare, è la gestione condizionale
>di un parametro contenuto in un tag.
>Mi spiego meglio: se quel parametro è "C" deve stampare una frase;
>se il parametro è uguale ad "N", deve stamparne un'altra, e in
>tutti gli altri casi, compreso il fatto che un tag può anche
>non contenere nulla, stampa, o meglio non dovrebbe stampare niente.
>Tutto questo, se è possibile, dovrebbe essere stampato all'interno
>di un box di testo, e quindi gestito dinamicamente, nel senso
>che non debbono essere prodotte righe bianche nel terzo caso
>prospettato.
per queste cose devi affidarti ad un campo formula, dove discrimini quello da stampare in base al valore del campo di quel record.
Ad esempio:
- fai una nuova formula (nella tab "document outline" dove ci sono i campi, c'è il nodo "formula" ->tastoDX)
- scrivi dentro:
select {campo} case 'C' : 'stringa 1' case 'D' : 'frase seconda' default: 'altro...'


>A rendere le cose ancora più difficile, mi è stato richiesto
>di caricare tali frasi da file di testo, un file per ogni frase
>da poter cambiare in qualsiasi momento senza toccare minimamente
>il report, che quindi andrebbe caricato (il testo) e stampato.
>Non so neanche se la cosa sia fattibile... sto veramente in alto
>mare.
questo effettivamente complica le cose, perchè devi fare questo caricamento delle descrizioni da codice, e passarle al report, magari proprio nella formula che ti ho consigliato prima...una cosa di questo genere:
//--- leggi le stringhe dal file string[] stringhe = File.ReadAllLines("..."); //--- carichi il report ReportDocument report = new ReportDocument(); report.Load(@"c:\...\mioReport.rpt"); //--- gli passi i dati report.SetDataSource(...); //--- costrusci la stessa formula di prima //--- scrivendo dentro però il testo che hai letto dal file report.DataDefinition.FormulaFields["miaFormula"].Text = "select {campo} " + case 'C' : ' " + stringhe[0] + " ' " case 'D' : ' " + stringhe[1] + " ' " default: 'altro...' "; CrystalReportViewer1.ReportSource = report;

così la formula farà la sua discriminazione del valore da stampare non più fisso da "editor delle formule" di Crystal, ma basato su quello che gli hai detto tu, creando la formula a runtime sostanzialmente...


ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

nihira Profilo | Newbie

Per il momento ho seguito alla lettera il primo consiglio e tutto funzia alla perfezione.
Ho creato due campi formula di 1 riga, spuntando nelle opzioni campo "il campo può aumentare".
Così facendo non ho spazi bianchi a seconda se la stringa da stampare sviluppi nel report più di una riga, dato che i tag da controllare (e quindi più campi formula) sono diversi.

Cercherò di far funzionare anche il secondo, decisamente più complicato, anche se da come stanno decidendo i capi sembra che per fortuna basterà gestire la cosa così.

Grazie mille!

ps: dato che nella guida in linea si fanno pochissimi accenni a questo tipo di linguaggio (come si chiama?), potresti consigliarmi una pubblicazione valida che spieghi con concetti semplici come scrivere codice con crystal?

freeteo Profilo | Guru

>Cercherò di far funzionare anche il secondo, decisamente più
>complicato, anche se da come stanno decidendo i capi sembra che
>per fortuna basterà gestire la cosa così.
ottimo!

>Grazie mille!
di nulla, siamo qui per questo.

>ps: dato che nella guida in linea si fanno pochissimi accenni
>a questo tipo di linguaggio (come si chiama?), potresti consigliarmi
>una pubblicazione valida che spieghi con concetti semplici come
>scrivere codice con crystal?
il posto migliore dove recuperare informazioni su come scrivere le formule è sicuramente il supporto ufficiale:
http://technicalsupport.businessobjects.com/
in particolare io ti consiglio questo pdf:
http://resources.businessobjects.com/support/communitycs/TechnicalPapers/basic_vs_crystal_syntax.pdf

ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo
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