Newsgroup: it.comp.software.database
Titolo: Distinta Base

Buongiorno a tutti, mi chiamo Andrea e questa è la prima volta che chiedo un
vero aiuto ed ho pensato ai newsgroup.
La mia necessità è quella di effettuare l'esplosione di una distinta e di
poterla stampare a video o su carta con una struttura ad albero a seconda
dei livelli di cui è composta).
Le tabelle usate sono
 - TabDistinta
 - TabComponenti
Ogni distinta ha un progressivo che la lega ai suoi componenti e c'è poi la
possibilità di avere delle distinte con altre sottodistinte al suo interno.
Dal punto di vista della query ho una mezza idea su come caricare la
distinta (se avete qualche suggerimento sarà ben accettato) ma non riesco a
trovare una soluzione che mi permetta di risolvere
il problema della visualizzazione ad lbero... come posso fare?
Spero di essere stato esauriente e confido in un aiuto... a presto.
 
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

           
IMHO dipende molto da come sono strutturate le tabelle.
Presumo che in TabComponenti ci sia un riferimento a TabDistinta, in 
modo da dare profondità infinita alla distinta base, giusto?
Sicuramente puoi sfruttare un algoritmo ricorsivo che si sviluppa su 
tutto il ramo prescelto, che è dato dalla chiave di tabdistinta.
Per ogni componente che trovi che ha un rif. a tabdistinta hai un 
componente da esplodere e richiami la funzione stessa passandogli come 
punto di entrata il nuovo id di tabdistinta, altrimenti prosegui.
M.


Hai capito perfettamente il problema e ti ringrazio della risposta, però
dalla mia conoscenza non ci sono possibilità di creare comandi SQL di tipo
ricorsivo e poi anche se riuscissi a recuperare i record voluti non avrei un
riferimento per riuscire a creare una struttura ad albero.
Se ti può essere utile uso SQL SERVER e vorrei sviluppare il tutto con
Delphi, ma se hai qualche consiglio a proposito del software di sviluppo
sarà ben accetto.
Ti ringrazzio vivamente dell'attenzione.
A.


 sarà ben accetto.
E' indifferente in questo caso cosa usi, si tratta semmai di capire come 
sono strutturate le tabelle (o come le strutturerai) e quale 
procedimento seguire.
Ad esempio qualcosa di rapido da implementare (non necessariamente 
efficente) è:
tb_articoli:
   art_id
   art_s_nome
tb_dbase
   dbs_id
   dbs_art_id -- reference all'art.
   dbs_dbs_id -- reference interna al padre
così ad esempio hai
1, "Penna a sfera", null -- non ha padre quindi è radice dell'albero
2, "Tappo", 1	 -- il padre è penna
3, "Refil", 1
4, "Inchiostro", 3 -- il padre dell'inchiostro è "refil" non "penna"...
5, "Corpo", 1
6, "Sfera", 3  -- la sfera è nel refil
Per sapere quanti figli ha un padre ricerchi sul campo dbs_dbs_id quelli 
che hanno l'id del padre e per ogni riga ottenuta, effetti nuovamente la 
ricerca usando la stessa funzione.
M.


 Ti ringrazio vivamente, ora mi metto sotto e cerco di creare queta
procedura.
Andrea


 Ti ringrazzio vivamente dell'attenzione.
prova a leggere qui.. per me è stato illuminante.. ;-)
http://www.sitepoint.com/article/hierarchical-data-database
saluti
Stefano

Tanto per spaventare un po' volevo farvi vedere la struttura delletabelle
che uso per la gestione della distinta.
Le tabelle usate sono:
1.DISTINTAARTCOMPOSTI la quale contiene tutti i codici che hanno una
distinta.
I campi sono:
progressivo
artcomposto (riferimento alla tabella degli articoli)
1.DISTINTABASE la quale contiene tutti i codici che compongono la distinta
base
I campi sono:
rifprogressivo (chiave esterna alla tab distintaartcomposti)
nrriga (ordine nella distinta)
codcomponente (riferimento alla tabella degli articoli)
Forse io non ho mai progettato data base ma come faccio ad esplodere una
distinta con sottodistinte con questa struttura?
Forse sono io ma mi sembra un tantino complicato... :-(
Grazie ancora per i link e l'aiuto Andrea


 che uso per la gestione della distinta.
prima o poi ne vedrai di tabelle complesse davvero :))
-- 
./artemis.alpeia

artemis.alpeia <it.i...@alpeia.artemis> wrote in message
ADfHc.9324$tj3.4...@news3.tin.it...

^_^
lol

 ha scritto nel messaggio
news:80Z116Z142Z65Y...@usenet.libero.it...

Ciao Andrea,
prova a vedere se puoi prendere qualche spunto da questo thread
-----------------
http://www.google.it/groups?q=query+ricorsiva+group:microsoft.public.it.sql&hl=it&lr=&ie=UTF-8&selm=e%23Blz5ENEHA.3400%40TK2MSFTNGP09.phx.gbl&rnum=1
-----------------
Ciao Giorgio


Ragazzi... di vederne delle belle sono d'accordo e altrimenti che gusto ci
si trova, però bisogno che una base logica ci sia e non risulti super
contorta... Cmq grazie dell'aiuto e dei link.


 ha scritto:

Grazie mille per il link... molto interessante.
Andrea


 ha scritto nel messaggio
news:80Z116Z142Z65Y...@usenet.libero.it...
