Accorpare dati campi di righe dettaglio

lunedì 15 febbraio 2010 - 16.47

Duka Profilo | Newbie

Ciao,
mi vengono passati dei dati da un file xml, da gestire come righe dettagli.
nella fattispecie ho ad esempio due colonne: Fase; Descrizione_fase.
Descrizione_fase non utilizza tutto lo spazio orizzontale, perchè i dati ricevuti per ogni riga sono fissi (20 caratteri) e vanno a capo sul sistema sorgente che ha una schermata di dimensioni minori.
quindi il report diventa ad esempio:
Fase Descrizione_fase
10 12345678901234567890
......12345678901ecc. ecc.
20 12345678901234567890
......123456ecc. ecc.

ciò che vorrei fare è una condizione per cui sino al variare di Fase, Descrizione_fase è l'unione di tutte le righe del dettaglio, in modo che il report risulti:
Fase Descrizione_fase
10 123456789012345678901234567890n..
20 12345678901234567890123456n..
logico che raggiunto un dato limite per il dettaglio di Descrizione_fase, o aumento il campo visibile o i dati saranno troncati.

In attesa di qualche suggerimento, vi ringrazio per l'attenzione.

SHEA Profilo | Newbie

Ciao,

perchè non provi a risolvere il problema alla fonte, alla creazione del file XML, mettendo un solo record per FASE e tanti campi descrizione.
In questo modo, potresti utilizzare il comando di String del Crystal per i campi descrizione!

SHEA

Duka Profilo | Newbie

Ciao SHEA,
potresti spiegrmi meglio cosa intendi con la tua proposta?
nel file xml, immagina che hai un campo Fase=10, seguito n volte dal campo Descrizione_fase (quante sono le righe occorrenti a descrivere fase 10). Poi la fase cambia e passa a 20, a sua volta seguita da dal campo Descrizione_fase (quante sono le righe occorrenti a descrivere fase 20). Così di seguito finchè non sono state passate tutte le fasi.
Il problema è che il campo descrizione fase alla fonte è solo di 20caratteri, mentre l'ampiezza orizzontale disponibile sul foglio di crystal è ad esempio di 40 caratteri.
Quello che cercavo era una formula per creare un campo che contenesse il concatenamento di due o più campi Descrizione_fase, finchè non varia il campo Fase. In tal modo mi propongo di ottenere un solo campo che contenga tutte le righe di Descrizione _fase, per ogni singola Fase, da formattare a piacimento.

Ho cercato su Crystal XI la funzione String cui hai accennato, ma non ho capito come potrebbe "fondere" le varie righe del dettaglio.

Per fare un esempio numerico, si può facilmente usare una formula perchè conti le righe dettaglio mentre sono usate dal report, e le sommi in una variabile (x=x+1 per ogni riga dettaglio usata).
Es. 2 righe:
X=0
X=0+1 x(prima riga)
X=1+1 x(seconda riga)
X finale = 2
Io mi chiedo se c'è un modo per fare la stessa cosa con le stringhe di testo, restituendo una stringa finale che sia il concatenamento di tutte quelle lette, fino a quando non cambia il valore del campo Fase.
Es. 2 righe:
X=''
X='stringa1' x(prima riga)
X='stinga1'&'stringa2' x(seconda riga)
X finale = 'stinga1'&'stringa2'

Bel rompicapo...

SHEA Profilo | Newbie

Ciao Duka,
non ho ben capito come è composto il tuo file xml, ma ti spiego come proverei io.

Innanzitutto, quanti campi descrizione ci possono essere per fase?
Facciamo 20, che per 20 caratteri fanno 4000,direi un buon margine.
Il mio record quindi è creato da 1 campo FASE e 20 campi DESCRIZIONE (pieni o vuoti).
Nel Report Crystal creo 10 nuovi campi formula concatenando:
nel primo descr1+descr2
nel second descr3+descr4
e via dicendo..
a questo punto ho 10 campifom_descr (da 1 a 10).
Creo 10 righe dettaglio con FASE e DESCR1 nella prima e per le altre 9 solo il campoform corrispondente (nella second la seconda descrizione nella tersa la terza e via di seguito).
A questo punto metto la condizione su tutte le righe, di stamparle solo se il campoform corrispondente è diverso (<>) da space (" ").

Forse è un lavoro di certosino, ma io l'ho fatto per delle diciture nel piede che variavano da cliente a cliente (per dei documenti bolla),e tutto è andato.
L'unica cosa, è che in anticipo devi calcolare un limite per queste diciture (descrizioni fase), olrte il quale il gioco non funziona più!

Spero di essere stato più chiaro e soprattutto di aiuto!
Ciao.
SHEA.

Duka Profilo | Newbie

Tutto chiaro, ma nel mio file xml non è possibile avere i record numerati. Non hai la possibilità di avere desc1, desc2, ... sino a desc20.
Solo n righe record descrizione_fase (per ogni fase, finchè il campo fase non cambia).

Il programma sorgente cioè crea l'xml comportandosi sui record del db, come la sezione dettagli di crystal. Per ogni campo fase_db, restituisce un file xml contenente una riga Fase per la fase_db e n righe Descrizione_fase, quanti sono le righe dei campi e Descrizione_fase_db.

Ecco il motivo per cui non avendo sin dall'inizio record differenti (numerati), ma solo ricorsivi, cerco un metodo che riesca a concatenarli con una formula ricorsiva.

Non so se sono stato spiegato ...
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