Newsgroup: it.comp.appl.access
Titolo: Distinta Base

Saluto chi mi legge, voglio porvi questo progetto:
L'intenzione è di gestire una distinta base con articoli codificati in
cascata per un numero indefinito di livelli.
Utilizzerei una tabella "tblArticolo" in cui sono contenuti gli articoli e
una seconda tabella "tblDistintaBase"
in cui codificare le righe della distinta base.
Per esempio una cucina è composta da telaio e ante, l'anta a sua volta è
composta da maniglia,
serratura e vetro; tutti gli articoli saranno codificati in tabella
"tblArticolo", mentre nella tabella
"tblDistintaBase" verranno invece codificati: cucina con i due sottoelementi
telaio e anta; anta con i suoi sottoelementi:
maniglia, serratura e vetro
cucina
   |      |
telaio, anta,
          |          |        |
       maniglia, serratura, vetro;
Il problema si presenta quando si vuole estrarre i dati ed "esploderli" ai
vari livelli, se i livelli sono fissi
la cosa è facile, ma con i livelli indefiniti la cosa è più complessa.
Quindi a parte qualche trucchetto nelle
tabelle, quello su cui chiedo aiuto sono le query e i report.
C'è qualcuno capace di risolvere questo problema ?
Ringrazio in anticipo chi mi risponderà
Mauro P

 ha scritto nel messaggio news:ce5soe$qsl$1...@grillo.cs.interbusiness.it...

Non so' cosa intendi per "...qualche trucchetto nelle tabelle..." ma il problema è che l'articolo "Cucina"  ha come componenti il
telaio, la maniglia etc. etc. E quest'ultimi sono anch'essi articoli.
Non indicando come hai risolto (con quale trucchetto) non è possibile aiutarti nella compilazione di query/report.
(suggerimento)
Dovresti risolvere inserendo due campi nella tabella "DistintaBase":
- idArticolo;
- idComponenteDi;
entrambi collegati ad una tabella Articoli dove avrai in elenco tutti gli articoli: Cucina, maniglia, telaio, etc. etc.
Nell'inserimento indicherai:
- l'articolo Cucina (es. idArticolo = 1) e idComponenteDi = 0;
- l'articolo Maniglia (idArticolo = 2) e idComponenteDi = 1 (Cucina idArticolo = 1);
e così via...
Ciao.
-- 
Sergio MAZZA

 ha scritto nel messaggio
news:ce5v6g$p7q$1...@canarie.caspur.it...

Grazie,
per trucchetto intendevo qualche forma di join tra due campi ID della stessa
tabella o sullo stesso campo, sempre in via teorica (e probabilmente
allucinata).
Per quanto mi proponi, ci rifletto assumendo che il campo si incrementi
automaticamente man mano che gli articoli si annidino.
Per il momento ho provato a utilizzare all'interno della "tblArticoli" i
campi "ArticoloID" e "ArticoloPadreID" in modo che questa informazione mi
consenta di ripercorrere i livelli della distinta base sino ad arrestarsi
quando i due campi sono uguali; ma più di questo non sono riuscito a fare.
Che ne pensi ?.
Ciao Mauro

 Ciao Mauro
Perché dici "...sino ad arrestarsi quando i due campi sono uguali"?
Mi sembra che conosci l'utilizzo della tecnica Padre/Figlio; però non sono convinto nell'inserire i campi nella tabella Articoli. Io
farei una tabella generica dove inserire tutti gli articoli (sia Padre che Figlio) e relativa descrizione; poi utilizzo questa per
creare la relazione Padre/Figlio in un'altra tabella. Questo per ottimizzare l'inserimento/modifica di un potenziale elenco di
articoli (es. codice barre, costo unitario, descrizione...).
Ciao.
-- 
Sergio MAZZA

 Ciao.
La vedo anchio come te, Sergio.
Rivolto a Mauro, mi sembra che non sia necessario "un campo si
incrementi
automaticamente man mano che gli articoli si annidino".
E volendo aggiungere una specie di eresia, a parte la soddisfazione di
realizzare un db su livelli variabili, la (mia) realtà suggerisce che
un numero di livelli >5 (toh 6!) si inutile e dannoso e che (forse) non
vale la pena di scraniarsi.
Ciao
Marco
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 articoli (es. codice barre, costo unitario, descrizione...).
-----> In principio avevo impostato i due cambi padre/figlio nella
"tblDistintaBase" ma non riuscivo comunque a eseguire una query che
"esplodesse" i vari livelli.
Quindi mi sembra che le impostazioni delle tabelle sono corrette, come
estrarre i dati ?.
:) Ciao
Mauro P

 ha scritto nel messaggio
news:cdd80aa886272e68fc4...@mygate.mailgate.org...

Ciao Marco,
grazie per l'intervento, penso che impostare un limito fisso di livelli
tolga flessibilità al programma.
Ciao Mauro

 tolga flessibilità al programma.
Sono perfettamente d'accordo con te, riflettevo sul fatto di rompersi
per
scrivere un sw flessibile quando poi il tutto non viene sfruttato.


 Mauro P
Io intendevo in modo diverso l'utilizzo di quei campi.
Riparto dal "mio pensiero";
Es.
tabella Articoli:
id, descrizione
1, Cucina "Tizio"
2, Maniglia
3, Cassetto
4, Forno
5, Cucina "Caio"
tabella (es.) ArticoliInMagazzino:
idArticolo, idCompostoDa
1,0    (Cucina "Tizio")
2,1    (Maniglia, per Cucina "Tizio")
3,1    (Cassetto, per Cucina "Tizio")
2,0    (Maniglia)
5,0    (Cucina "Caio")
4,5    (Forno per Cucina "Caio")
etc. etc.
Quando vuoi sapere di quali/quanti pezzi è composta la Cucina "Tizio", fai una query indicando in entrambi gli id il numero
dell'articolo Cucina "Tizio" (se scrivi "Biso" non funziona).
Ho interpretato male?
Ciao.
-- 
Sergio MAZZA