CR- campo incrociato?!?

venerdì 07 novembre 2008 - 10.12

laowai Profilo | Newbie

salve a tutti
ho un problema con la creazione di alcuni report (utilizzo CR2008) con campo incrociato.
Vorrei sapere se utillizzando una crosstable è possibile "rendere statiche le colonne"...
mi spiego meglio, devo creare una tabella che ha sulle righe una lista di ospedali, e sulle colonne i vari luoghi del parto, inserendo una count x determinare i valori della matrice.
poniamo il caso che i luoghi del parto siano codificati nel db con 1,2 e 3. creo dei raggruppamenti con una formula e chiamo 1 "a", 2 "b", 3 "c".
se nel db però non ci sono casi "c" x quei determinati ospedali la crosstable naturalmente sulle colonne avrà solo "a" e "b". E' possibile fare in modo che mi conti anche le "c" indicando naturalmente 0 come valore della count? Insomma colonne statiche e righe dinamiche...
grazie
giulio

BillyRay Profilo | Newbie

Ciao senti dovresti creare un gruppo... in modo da tirarti fuori le riche dinamiche di cui parli, poi ti dico come fare...
per il valore che se non c'è deve essere "0" devi, invece di mettere nelle celle i campi della tabella, mettere dei campi formula nei quali gli dici se esiste il valore metti il valore altrimenti metti "0" e mo ti dico come fare...

allora:
in alto nel menu principale clicca su insert e poi Group... lì devi indicargli per cosa si deve raggruppare... tipo il campo della tabella del tuo db "codice fiscale" se è una lista di nomi ok?

sempre dal menu principale clicchi su insert e poi Field Object e sulla finestra che ti si apre vedrai il campo Formula Fields... clicchi col tasto sinistro del mouse e ti appare l'opzione New... cliccala e dai un nome alla tua formula poi.... ti si apre un editor e li...
la formula da inserire ne campo formula è:

if nome_campo_della_tua_tabella = "" then
nome_campo_della_tua_tabella
else
0

se ti dice mentre lo salvi che vuole una stringa metti lo zero tra virgolette così "0"...
fammi sapere ciao




freeteo Profilo | Guru

>salve a tutti
>ho un problema con la creazione di alcuni report (utilizzo CR2008)
>con campo incrociato.
>Vorrei sapere se utillizzando una crosstable è possibile "rendere
>statiche le colonne"...
no, le colonne come le righe vengono create dinamicamente in base ai dati che elabora il report.
Se vuoi colonne statiche, devi usare mettere nella sezione dettagli i campi del db e mettere li una somma, per esempio puoi usare un campo sommatoria (Running Total Fields) oppure il campo diretto fare una somma (TastoDX sopra al campo ->Insert Summary).

Oppure potresti usare delle formule, ossia, se sai già che le colonne saranno di un numero preciso, ti basta mettere dei campi formula (uno per colonna) nella sezione dettagli e li fare la formula che ti suggeriva anche BillyRay, ossia controllare in quel caso se il campo deve essere un valore o metterlo a zero, in modo che sia sempre un numero. (puoi controllare anche con "isnull()" che è utile quando puoi avere anche valori nulli da db.)
A questo punto come ti dicevo, puoi inserire il summary per quelle formule, quindi una ogni campo che hai.

Eventualmente se hai dati di esempio su db temporaneo (magari access, e mi raccomando che siano dati "di prova" e non sotto privacy) e il report che vorresti, allegalo qui che proviamo a darti una soluzione più "mirata".Grazie.
ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

laowai Profilo | Newbie

intanto vi ringrazio per le risposte...
non ho capito una cosa però, i vostri suggerimenti sono intesi SENZA l 'utilizzo della crosstable o CON?
perchè cmq creando gruppi so come fare, ma volevo sfruttare la comodità della crosstable...
ciao e grazie

BillyRay Profilo | Newbie

Ma non puoi mettere come summarized fields nella format crss-tab una formula in cui come ti dicevo se il valore che ti serve è nullo ci metti 0?
magari sto dicendo una cretinata... ciao billy

freeteo Profilo | Guru

>intanto vi ringrazio per le risposte...
>non ho capito una cosa però, i vostri suggerimenti sono intesi
>SENZA l 'utilizzo della crosstable o CON?
io intendo "Senza Cross-tab" direttamente i campi formula nella sezione dettagli, non so però se sia possibile farlo con i dati che hai tu, magari se puoi allegare un report d'esempio, con un db semplice che abbia la stessa struttura (con dati fittizi) possiamo provare a trovare una soluzione "reale".


>perchè cmq creando gruppi so come fare, ma volevo sfruttare la
>comodità della crosstable...
eh la cross-table da molte comodità quando hai colonne-righe variabili, ma se non ho capito male tu sai già a priori quante colonne hai, quindi di fatto hai delle colonne fisse...almeno questo è quello che ho capito io

ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

BillyRay Profilo | Newbie

ma si infatti l'unica cosa che gli serve è fare in modo che se non ci sta un valore deve apparire "0"...
almeno io ho capito così...

laowai Profilo | Newbie

allora, il risultato ke vorrei ottenere è qualcosa del genere

354x85 90Kb

dove sulle righe ho gli ospedali, e sulle colonne il sesso dei nati (strano ma vero possono nascere indeterminati), e per i valori della matrice una count...
se utilizzo una crosstable sulle righe non ho problemi, perchè ho bisogno solo di determinati ospedali presenti sul db(tramite un input scelgo solo ospedale1,2,3,4)...sulle colonne invece inserisco la voce del db "sesso_nuovi_nati", ke puo avere valore 1=maschi,2=femmine,3=indeterminati (raggruppando tramite formula if campo=1 then 'maschi' else if campo=2 then 'femmine' else if campo=3 then 'indeterminati'). Il problema si presenta proprio ora, perchè non ci sono casi di sesso indeterminato per questi ospedali, perciò la colonna indeterminati scompare...
come fare utilizzando cmq una crosstable, che mi eviterebbe di fare linee ecc ecc?
consideriamo inoltre ke il report deve rimanere dinamico, i parametri di input potrebbero cambiare, ed esserci quindi +o- ospedali(nn so se questa è utile come info).
grazie 1000 x la disponibilità

BillyRay Profilo | Newbie

io una soluzione te la do ma non so se ti può andar bene...

fai una tabella con 3 colonne...

tab_1:
nomi_ospedali

tab_2:
maschio
femmina
gayaccio... lol

quindi alla fine metti un valore a 1 al campo maschio se è maschio e gli altri a 0... 1 se è femmina... etc...

che ne dici... comunque sto provando a ricreare il tutto per avere ben chiara la situazione... fammi sapere ciao

BillyRay Profilo | Newbie

hai ragione sia sulle righe che sulle colonne se mancano i valori non visualizza niente... orca vacca!
allora resettiamo tutto... e vediamo di trovare una soluzine... mmm.... ci sto pensando a dopo...

BillyRay Profilo | Newbie

non c'è modo... è assurdo ma è così la colonna che non contiene alcun valore non verrà visualizata ed ho provato ad inserire formule su formule ma non gli interessa va a leggere se esiste il valore nel DB e se non lo trova lo omette e vale sia sull'ospedale che non ha nascite e sia sul gayaccio ovvero i non identificati... fatemi capire ma può essere che la cross-tab è valida solo se i campi sono valorizzati?!

laowai Profilo | Newbie

oi grazie 1000 x l'impegno
vorra dire ke farò senza...
potrei fare un gruppo ospedali e poi tutte formule x conteggiare i vari tipi di sesso dei nati...
certo la crosstable sarebbe molto più comoda...
grazie a tutti

BillyRay Profilo | Newbie

ma ne Format Cross-Tab------>Cusomize Style... se noti ci sta un ceck per sopprimi le righe vuote e un sopprimi le colonne vuote quindi di conseguenza quelle vuote dovrebbero apparire! ma non è così... mi da l'idea più di un bug! MATTEOOOOOOOOO che ne pensi?
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5