Newsgroup: it.comp.appl.access
Titolo: Come organizzare DB per prestito libri? (forse tornano)

Vorrei realizzare un piccolo DB per tenere sotto controllo il continuo andi
e rivieni dei miei libri e cd.
Ho gia una minuziosa tabella con tutto registrato - IDLib- titolo - autore -
genere - ecc.
Ho redatto una tabella con l'elenco dei "clienti" :)))). - IDAmici - Nome -
Cognome ecc.
Come risultato vorrei avere (finalmete) l'elenco dei soli libri rimasti in
casa, l'elenco dei libri in carico a "Tizio", e se non chiedo troppo la
trafila dei prestiti che ha dovuto affrontare un singolo libro.
Chiedo per gentilezza una traccia generale, infatti non mi č chiaro come
organizzare la tabella che raccoglierą i dati dei singoli "movimenti".
Infinite Grazie.
- Bruno -

 organizzare la tabella che raccoglierà i dati dei singoli "movimenti".
Tabella movimenti
ID Movimento RifIdLib RifIdAmici DataDa DataA
poi aggiungi un campo prestato alla tabella dei libri di tipo Sì/No
Prestito:
Con una maschera selezioni un libro e un amico. I libri li selezioni con una
combo o una casella di riepilogo che abbai una query come origine riga che
ti dia solo i libri con prestato a No.
Al clic di un pulsante aggiungi un record alla tabella movimenti con le Id
scelte e la data corrente nella dataDa.
Restituzione:
Da una combo o una casella di riepilogo con query sulla tabella libri in
join con la tabella movimenti dove il campo DataA deve essere nullo,
selezioni il libro da restituire. Mettendoci il join anche con la tabella
amici ti da anche i dati di chi aveva il libro.
Premi il tasto e aggiorni il record selezionato con la data corrente sul
campo DataA
Storico movimenti
Report con query origine record sulla tabella movimenti in join con le altre
due tabelle
Puoi o selezionare tutti i libri e tutti gli amici e poi ti gestisci il caso
che non siano mai stati prestati o mai abbiano fatto un prestito, oppure da
due combo ti selezioni solo gli Id contenuti nella tabella movimenti.
Dopo la selezione apri il report con docmd.openreport e criterioWhere
(ultimo parametro) con l'ID selezionato
Antonio


Questo è il "classico" esempio di relazione molti a molti nel senso che un
libro può essere prestato a molti amici (ovviamente non nello stesso tempo)
e un amico può prendere in prestito molti libri (anche nello stesso tempo!).
Non è possibile creare direttamente con access una relazione molti a molti.
Lo si fa indirettamente con una tabella "intermedia" che contiene i singoli
prestiti.
La tabella "Prestiti" deve contenere i seguenti campi:
IDPrestito (contatore o altro a seconda delle esigenze ma comunque campo
chiave)
IDAmico (L'identificatore del "cliente" indicizzato con duplicati possibili)
IDLibro (l'identificatore del libro indicizzato con duplicati possibili)
Questi sono i campi NECESSARI. Dovrai impostare una relazione (che verrà da
sè) uno a molti con le due tabelle che hai creato. A questo punto potrai
inserire per ognuno degli Amici/Clienti quanti prestiti vorrai.
Oltre ai tre campi necessari puoi inserire nella tabella prestiti altri
campi che caratterizzano il prestito come:
DataInizio (la data in cui il prestito è stato fatto)
DataFine (data della fine del prestito)
Condizioni del libro
Urgenza (quanto ha rotto l'amico/cliente perché glielo prestassi?)
ecc
ecc
ecc
(tutto quello che ti viene in mente e che può essere utile annotare)
Con questi dati inseriti puoi poi implementare funzioni che leggendo la data
di sistema avvisano che un libro è in prestito da più di un tot di tempo o
che segnalino che un cliente/amico ha in prestito un numero esagerato di
libri ecc ecc.
Spero che le dritte siano state chiare
A presto... e per favore potresti prestarmi quel libro sulla Rivoluzione
Francese?
Gio'

Antonio
C'č una ragione particolare per cui crei il campo 'prestato' invece di
verificare se č null il campo 'DataA' dell'ultimo record riferito a
quel libro nella tabella movimenti?
Ciao, grazie.
--
   Alberto
No alla guerra

 quel libro nella tabella movimenti?
Oooops... scusami, hai ragione, mi sono dimenticato di quel campo che avevo
introdotto.
Ovviamente nella transazione di prestito andava settato a Sì e nella
restituzione a No
L'utilità può essere che è magari più comodo fare query solo sulla tabella
libri per vedere cosa è stato prestato o meno, però, se poi hai bisogno
anche delle informazioni su chi l'ha preso e quando e quindi devi fare una
query in join con la tabella movimenti, allora in effetti lo fai col null
sul campo DataA
Antonio

 ha scritto nel messaggio
news:sCI4a.133971$ZE.38...@twister2.libero.it...

Grazie Antonio e  grazie Gio'.
- Bruno- .

Antonio
Grazie Antonio (sto portando avanti una catalogazione di libri e
allora mi interessava sentire punti di vista diversi)
... sto seguendo con grande interesse il tuo 3d su Pasqua ;) ...
Ciao


 ... sto seguendo con grande interesse il tuo 3d su Pasqua ;) ...
Hehe heeh he eehe eheh ehe ehe ee
Antonio