Stampa Distinta base valorizzata

martedì 15 marzo 2011 - 09.45

guidoerp Profilo | Newbie

Salve a tutti,
inserisco questo post per porvi un quesito su cui stò sbattendo la testa da un paio di giorni.
Premetto che è da poco che mi trovo a lavorare con CR per cui mi scuso per la mia inesperienza.
Il problema è il seguente:
ho a dispozione un report che consente di stampare le righe di output di una query abbastanza complessa (una distinta base), esempio:

livello item quantità
a 1 001 1
b 2 002 2
c 2 003 2
d 3 004 3
e 4 005 4
la riga e è un figlio della riga d; la riga d si riferisce ad un figlio della riga c; le righe b ed c sono figli della riga a.
il problema è sui valori di quantità:
le quantità nell' esempio si riferiscono alla quantità dell' articolo in questione necessaria per produrre una quantità pari ad 1 del suo padre.
Ho necessità, per ogni figlio, di avere un campo che mi specifichi la quantità totale necessaria per produrre tutti i padri...e così via via per tutti i livelli. Quindi mi aspetto un output come segue:
livello item new_quantità
a 1 001 1
b 2 002 2
c 2 003 2
d 3 004 6
e 4 005 24

In pratica mi servirebbe una procedura che mi consenta, per ogni riga del report, di scorrermi le righe precedenti per intercettare quella con un livello appena inferiore in modo da recuperare la sua quantità e moltiplicarla con quella che ho a disposizione.

Spero che qlcn mi possa aiutare...
Grazie a tutti.

freeteo Profilo | Guru

Ciao,
la cosa non è molto semplice da fare, ossia al massimo dentro ad una formula di crystal (campo dentro al quale puoi scrivere del codice) non hai accesso all'indietro o avanti nei record, perchè di fatto (se la metti nella sezione dettagli) sei puntato ad ogni record.
Al massimo hai "Previous({campo})" e il duale "Next({campo})", ma a quanto ho capito tu dovresti poter andare indietro di un nro di record arbitrario...

Puoi però provare a giocare sempre con la formula, ma appoggiando il valore su una variabile "Shared" in modo che ad ogni record hai il valore sempre in canna...ad esempio puoi fare una formula dove scrivi questo codice:

if shared numbervar valore < {campo} then shared numbervar valore := {campo}

così ad esempio hai il valore "minimo" di un campo...il tuo caso è più complesso ma prova a vedere se la strada è percorribile...

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5