Creazione dinamica gruppi

martedì 18 marzo 2008 - 12.53

marco2k6 Profilo | Newbie

Ciao a tutti,
sapete per caso come si fa a creare dinamicamente un gruppo?
Ho la necessita' di cambiare il campo del db associato al gruppo in modo dinamico in base a un parametro che c'e' su un altro campo del db. Tutto questo per evitare di costruire 20 report uguali (ovviamente cambiano solo per il gruppo)

freeteo Profilo | Guru

ciao,
questa mia tip di un po' di tempo fa, parla proprio di qeusto:
http://www.dotnethell.it/tips/ModificheRuntimeCrystal.aspx

ti ho allegato il progetto che è quello del tip, cosi' puoi guardarti anche l'implementazione reale.

ciao.

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

marco2k6 Profilo | Newbie

Ciao,
grazie funziona perfettamente!!


Pero' se ti vuoi divertire prova a risolvere questo quesito:
---------------------------------------------

In access ho costruito due tabelle: TABELLA_ANNO e PARAMETRO

La tabella TABELLA_ANNO e' cosi' strutturata
ANNO testo 4
IMPORTO valuta
SERVIZIO testo 50

Dentro la tabella TABELLA_ANNO ho inserito i seguenti valori
ANNO IMPORTO SERVIZIO
2007 110 GAS
2007 130 ENERGIA ELETTRICA
2007 200 ACQUA
2007 115 GAS
2007 123 ENERGIA ELETTRICA
2008 100 ACQUA
2008 90 GAS
2008 133 ENERGIA ELETTRICA
2008 80 ACQUA
2006 20 GAS
2006 35 ENERGIA ELETTRICA
2006 43 ACQUA
2006 50 GAS

La tabella PARAMETRO e' cosi' strutturata
valore testo 1

Dentro la tabella PARAMETRO ho inseriro il campo valore
I valori sono 'A' per anno , 'B' per importo , 'C' per servizio

--------------------------------------------- Questo e' la formula utilizzata come gruppo
dim valore

if {parametro.valore} = "A" then
valore = cstr({tabella_anno.ANNO})
elseif {parametro.valore} = "B" then
valore = cstr({tabella_anno.IMPORTO})
else
valore = cstr({tabella_anno.SERVIZIO})
end if

formula = valore

--------------------------------------------

e cosi' funziona!

volevo ulteriormente semplificare utilizzando il campo parametro per inserire direttamente il nome del campo

in pratica:

formula = cstr(parametro.valore}

e dentro la tabella PARAMETRO inserisco TABELLA_ANNO.ANNO o TABELLA_ANNO.IMPORTO o TABELLA_ANNO.SERVIZIO

ma non funziona!!

ho fatto centinaia di prove e non sono riuscito a capire la logica che crystal utilizza per utilizzare i gruppi

addirittura se scrivi:


if {parametro.valore} = "A" then
valore = cstr({tabella_anno.ANNO})
elseif {parametro.valore} = "B" then
valore = cstr({tabella_anno.IMPORTO})
else
valore = cstr({tabella_anno.SERVIZIO})
end if

formula = 'XXXX' & valore & "XXXX"

funziona lo stesso!!

Quindi l'unica spiegazione e' che il valore sia passato come riferimento.

BOH!




freeteo Profilo | Guru

ciao,
non è che sia un problema di "{" o di apici? perche' se guardi nell'esempio la formula scrive dentro il nome del campo fra "{}" in modo da non avere un valore stringa ma un nome di campo.

Altra cosa, potrebbe essere che magari passando tramite una valore di db, lo legga cmq come un valore stringa, e non "qualcosa" da scrivere dentro alla formula...
Perche' il gioco è proprio quello, ovvero passare da codice un valore che è come tu scrivessi dentro al formula editor di Crystal, non una stringa...

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