Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
SQL query
martedì 17 novembre 2009 - 11.53
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
michelepari
Profilo
| Newbie
3
messaggi | Data Invio:
mar 17 nov 2009 - 11:53
ciao a tutti.
premetto che sono anni che non ho più a che fare con access e mi servirebbe aiuto.
Devo creare un db per la gestione del magazzino.
E' così creato:
tabella "magazzino" (con i campi: Id, codice, categoria, descrizione, prezzo_D, prezzo_T, cassetto, venduto (campo si/no)
tabella "giacenze" (uguale a tabella magazzino)
tabella "venduto" (uguale a tabella magazzino)
la tabella magazzino avrà tutti i record compilati con tutti i dettagli degli articoli.
all'inizio la tabella giacenze dovrà essere uguale a quella magazzino presupponendo di non aver fatto ancora nessuna vendita.
la query che devo creare mi deve gestire vendite e giacenze, praticamente:
quando vendo un articolo e spunto il campo venduto dalla tabella "magazzino", tale record deve "sparire" dalla tabella "giacenze" e apparire in quella "venduto" mentre in quella "magazzino" rimane e ha il campo "venduto" con la spunta.
la parte di query per copiare il record da una tabella all'altra sono riuscito a crearla (INSERT FROM ecc.ecc..), mi manca tutto il resto, praticamente cancellare il record e farlo comparire nell'altra tabella.
passo successivo: se per qualche motivo tolgo la spunta dal campo "venduto" nella tabella "magazzino" deve accadere il contrario e ricomparire.
spero di non aver scritto troppo complicato.
grazie a tutti
motogpdesmo16
Profilo
| Senior Member
201
messaggi | Data Invio:
mar 17 nov 2009 - 15:22
Ciao,
secondo me drest innanzitutto rivedere la struttura delle tue tre tabelle. Così come le hai progettate incorri sicuramente in errori di ridondanza e, stando alla teoria, correggetemi se sbaglio, non sono nemmeno in forma normale.
Ritengo quindi debba progettar la struttura dati in questa maniera:
tabella "magazzino" (con i campi: Id, codice, categoria, descrizione, prezzo_D, prezzo_T, cassetto) (eliminare la colonna venduto)
tabella "giacenze" (Id (chiave esterna sulla tabella magazzino), Quantita)
tabella "venduto" (Id (chiave esterna sulla tabella magazzino), Quantita)
All'inizio avrai valorizzata solo la tabella Magazzino, che conterrà tutti gli articoli e contestualmente imposterai la giacenza nella tabella Giacenze.
Quando venderai un articolo, effettuerai l'INSERT/UPDATE (a seconda che il record sia presente o meno in tabella) nella tabella Venduto e decrementerai la quantità presente in Giacenze sempre riferita allo stesso articolo (rintracciabile quindi tramite chiave esterna).
Il concetto di campo "venduto" secondo me è sbagliato: puoi avere una giacenza di 10 pezzi a magazzino e venderne solo 5 (quindi quantità inferiore a quella presente in giacenza). Stando a come hai immaginato tu la situazione, ogni vendita dovrebbe essere di una quantità pari a quella presente in magazzino.
Se hai bisogno di ulteriori chiarimenti, chiedi pure!
ciao ciao
Man mano che andar
michelepari
Profilo
| Newbie
3
messaggi | Data Invio:
mar 17 nov 2009 - 16:35
ciao,
intanto grazie per la risposta...come mi proponi di creare la tabella giacenze non va bene per le mie esigenze.
I dati che io devo inserire sono degli articoli che possono avere lo stesso codice ma descrizione differente.
nella tabella giacenze non mi si deve visualizzare un totale raggruppato per articoli (in quanto possono appunto differenziare per descrizione) ma tanti record quanti sono effettivamente gli articoli non venduti.
ho creato un file in excel che ho adoperato finora, solo che volevo creare qualcosa di più carino aggiungendo delle maschere per l'inserimento.
Ho creato tre fogli di lavoro: foglio Magazzino (che elenca voce per voce tutti gli articoli (anche se con stesso codice)) foglio Venduto e foglio Giacenze
Nel file di excel gli stessi campi delle tabelle di access che ho sopra descritto. Il campo "venduto" nel foglio Magazzino,se lo lascio vuoto, l'articolo mi rimane nel foglio Giacenze, se scrivo "1" mi sparisce da foglio Giacenze e compare in quello Venduto (tra l'altro aggiornando un campo che conteggia il totale degli articoli venduti e contestualmente nel foglio Giacenze lo stesso campo diminuisce di un unità)
prassitele
Profilo
| Newbie
7
messaggi | Data Invio:
mar 17 nov 2009 - 18:49
Ciao.
Secondo me, il suggerimento che ti ha dato "motogpdesmo16" non è sbagliato. Infatti tu dici di avere articoli con il medesimo codice ma descrizione diversa. Questo non costituisce un problema. Se usi ID come primo campo della tua tabella Magazzino, ritengo che questo sia la chiave della tua tabella. Nessuno, pertanto, t'impedisce di porre questo ID autoincrementale (Autonumber in SQL Server); questo significa che possono sicuramente essere presenti in Magazzino record con il medesimo Codice ma questi saranno contraddistinti da ID diverso. E' questo ID che dovrai usare per realizzare la chiave esterna con le Tabelle Giacenze e Venduto e, in qualunque momento potrai conoscere tutte le caratteristiche di ciò che hai venduto o che avrai in giacenza con query Select semplici come quella che ti scrivo qui di seguito:
-- Per il Venduto --
Select A.Codice, A.Categoria, A.Descrizione, B.Quantita
From Magazzino A, Venduto B
Where B.ID = A.ID
-- Per la Giacenza --
Select A.Codice, A.Categoria, A.Descrizione, B.Quantita
From Magazzino A, Giacenza B
Where B.ID = A.ID
Riguardo, poi, alla movimentazione delle "merci", anche nel caso in cui la quantità di ogni articolo sia 1, i problemi non si porrebbero; ti basterebbe, infatti, all'atto della vendita, decrementare la quantità nella tabella Giacenze (fino, chiaramente, a 0) ed Inserire l'Id dell'articolo venduto nella tabella Venduto ponendo automaticamente la quantità ad 1 (se l'articolo non è presente in questa tabella) oppure semplicemente incrementarne la quantità (se l'Id dell'articolo è già presente in Venduto).
In questa ipotesi, si modificherebbe un pochino la query che ti ho indicato sopra, qualora tu abbia intenzione di mostrare gli articoli ancora giacenti in quantità > 0
-- Per la Giacenza --
Select A.Codice, A.Categoria, A.Descrizione, B.Quantita
From Magazzino A, Giacenza B
Where B.Quantita > 0
And B.ID = A.ID
Spero di aver interpretato bene il tuo quesito.
In ogni caso, Ciao.
motogpdesmo16
Profilo
| Senior Member
201
messaggi | Data Invio:
mar 17 nov 2009 - 22:44
@michelepari: secondo me dovresti staccarti da quello che hai fatto e cercare di realizzare, per quanto possibile, qualcosa ex-novo. Credo sia formalmente errato il tuo metodo di lavoro per la determinazione di venduto e giacenze. L'analisi dell'amico prassitele è altresì corretta e, unendo ciò che ti abbiamo scritto, credo potrai realizzare qualcosa di sicuramente più efficace.
michelepari
Profilo
| Newbie
3
messaggi | Data Invio:
mer 18 nov 2009 - 09:42
ragazzi grazie a tutti....ottimi suggerimenti....come anticipato è da una vita che non mi cimento in Access ed è evidente che la coltre di "polvere" depositata sulle mie memorie è più spessa di quanto sperassi.
i vostri suggerimenti sono stati come una passata di Swiffer...grazie
Torna su
Stanze Forum
Elenco Threads
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 !