Distinta base con tabelle allegate a Ms Sql Server Stampa
Scritto da Giorgio Rancati   
Sabato 24 Novembre 2007 01:00

L'esempio utilizza tre tabelle, una per le unità di misura, una per i prodotti e una per la composizione della distinta base, la loro struttura è semplice e con pochi campi, non intendo trattare tutta la problematica di magazzino ma solo la struttura per implementare la distinta base.

L’allegato contiene il file "TestDistintaMdb.sql" che serve a generare gli oggetti del database.
Dopo il codice che genera le tabelle si incontra la prima funzione ufn_CKRicorsione, che viene richiamata dal vincolo di tabella CK_Distinta_Ricorsione e serve a controllare che non vengano inseriti componenti che possano generare ricorsione, ovvero un loop infinito o quasi in quanto c'è un limite di 100 ricorsioni, limite che nelle query ricorsive, si può superare aggiungendo l'hint MAXRECURSION.

Proseguendo nel codice si incontra un'altra funzione ricorsiva ufn_CalcolaCostoProdotto, questa, scorrendo in avanti la distinta, calcola il costo del prodotto passato nel primo parametro, se il prodotto non ha distinta viene reso il costo inserito nell' anagrafica prodotto.
La funzione ufn_CalcolaCostoProdotto viene utilizzata nella vista uvs_CalcolaCostoProdotto che allegata al database MDB ci servirà per conoscere il costo di uno o più prodotti.

L'output dell'esplosione della distinta è affidato alla funzione ufn_EsplodiDistinta che rende  un resultset con i vari componenti e il loro costo in base al codice prodotto passato nel parametro @Padre.
Il risultato finale viene reso al database MDB tramite la vista uvs_EsplodiDistinta  allegata ad esso e che al suo interno esegue la cross apply tra la tabella prodotti e il risultato della funzione ufn_EsplodiDistinta.


Istruzioni per Sql Server 2005
Aprite SQL Server Management Studio Express, create un nuovo database, dategli il nome TestDistintaMdb, aprite ed eseguite lo script contenuto nel file TestDistintaMdb.sql. Aprite il database allegato TestDistinta.Mdb con una versione di Access uguale o maggiore alla 2000, aprite la tabella Connessione e compilate il campo NomeServer con il nome del vostro database server, se avete installato un’istanza di Sql Server2005 express tale nome è NomeComputer\SqlExpress, dove NomeComputer è il nome della macchina su cui è in funzione il servizio Sql Server.
Chiudete la tabella Connessione e aprite la maschera AllegaTabelle, questa mascherà eseguirà il codice necessario ad allegare le tabelle e le viste al database MDB, il messaggio "Tabelle allegate con successo" indicherà il successo dell’operazione.
Fatto questo potete aprite la maschera Prodotti per provare l’esempio.

 

 

 


Sistema operativo: Win32
Applicazioni: Access 2000, Access 2003, Access 2007

 

Allegati:
FileDescrizioneDimensione del File
Scarica questo file (TestDistintaMdb.zip)TestDistintaMdb.zip 51 Kb
Ultimo aggiornamento Giovedì 02 Luglio 2009 12:14