Newsgroup: it.comp.appl.access
Titolo: Nascondere colonne vuote in un report

Questa è tosta...
ho 1 tabella contenente codice prodotto e 30 colonne indicanti le
caratteristiche del prodotto.
Con questa ho creato un report suddiviso per gruppi in base alla
cateogria principale.
Il problema è che in ogni gruppo la maggior parte di colonne è vuota e
ciò crea molta confusione.
E' possibile nascondere le colonne vuote in ogni gruppo???
Grazie!

emibal ha scritto:

E' stata progettata male la struttura tabellare del database, non è
normalizzata e quindi come sempre in questi casi poi sorgono problemi
quando vai a fare query e report.
Se è possibile e se vuoi fare un bel lavoro dovresti normalizzarla
dividento i dati in due tabelle, una tabella Prodotti e una
Caratteristiche, collegate con una relazione.
Ciao.
-Marco-
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


Mi sa mi sa che "Tabella - valori in riga" non ti piaceva tanto... :-)
Ciao
-- 
Daniele
Rispondere scartando OneEDP, spam e 32


Assolutamente!! Valori in riga li ho utilizzati con grande
soddisfazione per un altro scopo e ti ringrazio!
E' un po' difficile da spiegare ma non penso che il mio database non
sia normalizzato... Ho effettuato la scelta di mettere alcune
caratteristiche in riga (si trattano di misure di alcune parti di un
prodotto) per velocizzare l'inserimento dati che sarebbe stato
altrimenti molto lento nel caso in cui avessi utilizzato delle sotto
tabelle correlate.
Ora ho questa esigenza: quella di nascondere le colonne inutilizzate
nel report... suggerimenti??

 nel report... suggerimenti??
Questa è la prima conseguenza della scelta di lavorare su un db non
normalizzato: non riesci a fare i report.
Hai due possibilità: controlli il report con un sacco di codice VBA o
normalizzi la tabella con una query di unione e poi la usi per alimentare
un report normale.
Es.:
SELECT ID, caratt1 FROM Tabella WHERE caratt1 Is Not Null
UNION ALL SELECT ID, caratt2 FROM Tabella WHERE caratt2 Is Not Null
UNION ALL SELECT ID, caratt3 FROM Tabella WHERE caratt3 Is Not Null
UNION ALL SELECT ID, caratt4 FROM Tabella WHERE caratt4 Is Not Null
....
UNION ALL SELECT ID, caratt30 FROM Tabella WHERE caratt30 Is Not Null;


 nel report... suggerimenti??
Quando parli di alcune stai parlando di trenta colonne?
Se sono trenta non ci stai neanche in un A2 (il quadruplo di un A4)
Per attuare la tua soluzione bisogna inventarsi qualche query su tabelle 
temporanee...
Ma oggi hai il problema dei report, e domani chissà


 Rispondere scartando OneEDP, spam e 32
Ho capito... grazie a tutti... mi metto a testa bassa e....
normalizzo!!!

Scusate ma... mi sono già bloccato.. forse non sono del tutto
convinto. Vorrei un'ultima opinione:
In effetti quei 30 campi che ho definito caratteristiche, forse non
sono così... e non sono neanche ricursivi.
Vi faccio l'esempio di quello che ho:
ID, Articolo, Larghezza, Altezza, Lunghezza, Peso, Volume, Area,
ecc....
Come vedete sono tutti campi il cui valore è un numero sempre diverso
l'uno dall'altro.
In qualche articolo vanno compilati solo Larghezza e altezza, in altri
solo il Peso e il volume...
Come faccio a normalizzare la tabella? Secondo me questa è già
normalizzata.. o mi perdo in un bicchier d'acqua??!?!?!?

 wrote in message 
news:daa2bab6-d14c-488f...@l20g2000yqm.googlegroups.com...

Sì, certo, col criterio di mettere tutto nello stesso sacco
la tabella è già normalizzata.
Dovrai cercare di suddividere i prodotti per categorie
omogenee onde ottenere un numero limitato di campi
che vengano, nella normalità, tutti compilati o quasi.
Ovvero definire alcuni campi che accolgano valori
comuni a tutti i prodotti e riservare un campo Text
(o Memo) che accolga le caratteristiche specifiche
di ciascun prodotto.
Se devi catalogare dei chiodi da scarpe e vino
contenuto in botti potresti avere come campi "comuni"
la quantità, il valore, la data di acquisto, la scorta minima, etc,
e avere nel campo "specifiche" l'indicazione di unità di misura
(peso per i chiodi, litri per il vino, area per i campi da tennis,
lunghezza per i cavi elettrici, altezza..., larghezza...)
Sto cercando di creare una tabella temporanea che derivi
da quella principale avendo quivi eliminato le colonne blank,
Ma non riesco a definire quando una colonna è blank se non
facendo una scansione su tutti i campi... il che è assurdo!
Bruno 

 Bruno



Relazione uno a molti
Anagrafica: IDAnagrafica, Descrizione, IDTipoProdotto
(chiave primaria IDAnagrafica)
CaratteristicheAnagrafica: IDAnagrafica, IDCaratteristica, CampoValore
(chiave primaria IDAnagrafica, IDCaratteristica)
TipologieProdotti: IDTipoProdotto, IDCaratteristica
(chiave primaria IDProdotto, IDCaratteristica)
Caratteristiche: IDCaratteristica, DescrizioneCaratteristica
(chiave primaria IDCaratteristica)
All'utente dovrai far popolare la tabella CaratteristicheAnagrafica 
secono quanto indicato dalle caratteristiche presenti nella tabella 
TipologieProdotti ricercando IDTipoProdotto
In definitiva TipologieProdotti è l'elenco delle caratteristiche 
associate ad una IDAnagrafica, Caratteristiche è solo descrittiva
A questo punto avrai nel subreport certamente CaratteriticheAnagrafica, 
da 0 a nmila detail. In ogni caso non potresti piazzare più di una 
decina di caratteristiche...
Ciao


 E' possibile nascondere le colonne vuote in ogni gruppo???
Cosa intendi con "colonne" in riguardo al report?
Si tratta di un report tabellare con un campo accanto all'altro?
Non posso credere che hai fatto questo per 30 colonne.
Se invece si tratta di un report standard "a colonne", cioč un
campo sotto l'altro, basta  
www.donkarl.com/it?FAQ5.14
.
-- 
Ciao
Karl
*********
Access FAQ:  
www.donkarl.com/it
 

 Access FAQ:  
www.donkarl.com/it
Già, trattasi di report tabellare con un campo accanto all'altro...
quindi con colonna intendevo "campo"....
Ammetto di aver fatto un grave errore non pensando a ciò che sarebbe
accaduto nei report!....

 (chiave primaria IDAnagrafica, IDCaratteristica)
il "CampoValore" non sempre ha formato numerico (ho bisogno di formato
testo, numerico a precisione doppia, formato numerico per correlare
valori con casella combinata)....
In effetti lo scenario era lievemente più ampio ma ciò non toglie che
io abbia commesso degli errori....
Grazie a tutti per il supporto, ora vado a meditare ma....
prima di stravolgere tutto (purtroppo ho circa 3.000 records già
popolati)
stavo provando sul report una routine sulla formattazione del
raggruppamento "Tipologia".
Forse, trovando che la somma dei campi è vuota, potrei impostare la
Width della cella =0...
Lo so che questo sarebbe solo un palliativo, ma per il momento mi
risparmierebbe tanto lavoro!!! Speriamo che funzioni ma non sembra
così semplice..
Emiliano


Workaround:
tutto formato testo
e aggiungi a
Caratteristiche: IDCaratteristica, DescrizioneCaratteristica, IDTipoDato
TipiDati: IDTipoDato, Descrizione
esempio:
1, Intero
2, Testo
3, Numerico
4, Data
Con questa tabellina di traduzione applichi
1) applichi la convalida dei dati (purtroppo mi repelle, ma non vedo 
altro per ora)
2) condizioni runtime come mostrare i dati a video (form, report, ecc...)
Ciao
-- 


 Ma forse non ho compreso
Data una tabella con 30 campi e un migliaio di record, come
faccio a determinare quale colonna (quale campo per tutta la tabella)
è blank, in modo da poterlo temporaneamente eliminare ai fini
della determinazione del RecordSource per un Report?
Bruno 


Mi sembra ottimistico predire che un migliaio di record una colonna sarà 
null in tutte le righe... ma se può fa con una select correlata ciclando 
per i fields ado o adox.
1) TotRighe = Conta tutte le righe
  for each fld in rst.Fields
  conta  Dcount( fld.Name, "tbl", fld.Name & " Is Null ")
   if conta = TotRighe then "insert into tblvuoti values( '" & fldName& "' "
next
Al termine tblVuoti contiene tutti i "campi" nulli
Ciao


 per i fields ado o adox.
E io che avevo detto?
"facendo una scansione su tutti i campi... il che è assurdo!"
Bruno
 


Mi sono perso nel 3d..
Allora quale era la domanda? :-)
