Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[Access] Progettare base di dati, modello ER

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Re: [Access] Progettare base di dati, modello ER

Postdi Flash30005 » 11/07/09 14:32

pcexe ha scritto:Allora cosa hai fatto????


Apri il database (non convertire in 2007) e quindi la maschera per inserimento dati "MInp_Dati_auto"
Attraverso la maschera potrai inserire appunto i dati della multa
I dati solo "liberi" per quanto concerne i campi
Veicolo
Targa
Proprietario
Data
Luogo
Vigile (questo campo lo possiamo vincolare)
mentre per il campo
Codice_Infrazione hai un Help (?) dove poter leggere il codice dalla tabella in funzione della descrizione e quindi trascriverlo in questo campo.
Al momento che digiti il Codice infrazione e passi al campo successivo appaiono i valori
Minimo e Massimo Importo multa
nel campo multa va inserito un importo compreso in quei campi (possiamo inserire un controllo che sia effettivamente compreso in quel range)
quindi Il campo multa va digitato
Il campo PuntiPat non va digitato perché il dato proviene proprio dalla tabella Codici Infrazione e non è modificabile da questa maschera.
una volta riempiti i Campi si preme il tasto "Registra" e si ha la possibilità di inserire un nuovo record.

Ho realizzato i due report richiesti
vai su Report e apri "RMultaDDS" è il report richiesto relativo solo ai Divieti di Sosta
Infine il report RMultaVigile che una volta avviato chiede il nome del vigile (la richiesta era: "Costruire un report delle multe elevate da un determinato vigile") quindi una volta digitato un nome del vigile, esistente nella tabella vigili, avrai il report delle multe corrispondente a quel determinato vigile.

Ciao

P.s. Se vuoi vedere le relazioni le trovi con Strumenti > Realzioni, troverai la relazione del Codice_infrazione "da uno a molti" relativi alla tabella Codici_Infrazioni (uno), e alla tabella Dati_auto (molti)
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Sponsor
 

Re: [Access] Progettare base di dati, modello ER

Postdi pcexe » 11/07/09 15:20

Caspita che lavoro hai fatto!!!! :o
Ma come hai fatto a creare i report e la maschera????
pcexe
Utente Junior
 
Post: 20
Iscritto il: 10/07/09 15:42

Re: [Access] Progettare base di dati, modello ER

Postdi pcexe » 11/07/09 16:12

Cioè spiegami come si fanno a creare le maschere e i report... :(
pcexe
Utente Junior
 
Post: 20
Iscritto il: 10/07/09 15:42

Re: [Access] Progettare base di dati, modello ER

Postdi Flash30005 » 12/07/09 01:28

La prima cosa è appunto Relazionare le due tabelle Codici_infrazioni e Dati_auto come ti dicevo andando su Strumenti > Relazioni. Aggiungi prima una e poi l'altra tabella selezionandole, e trascinando il campo Codice_Infrazione della prima verso lo stesso campo dell'altra tabella scegliendo la Join da uno a molti (vedi la freccia va verso molti)
Poi ho realizzato la query necessaria per avere una tabella virtuale e completa "QDatiMulta". Con questa query tu hai tutti i dati dall'auto alla descrizione del codice della strada.
Per fare una query, clicchi su Nuova query (puoi eseguire solo struttura e scrivere il codice direttamente in SQL) oppure con la creazione guidata di query semplice > nella finestra successiva ha la possibilità di inserire sia i campi della tabella dati_auto che tabella codici_infrazioni, inserirai tutti i campi della 1ª tabella escludendo il campo ID e tutti campi della seconda tabella escludendo oltre all'ID anche il campo Codice_Infrazione (in quanto già inserito dalla 1ª tabella). Alla fine della procedura, se tutto ok e avviando la query, avrai la tua tabella "virtuale" completa di tutti i dati. Virtuale perché non è proprio una tabella fisica come le tabelle dati ma viene creata ogni volta che lanci la query (fisicamente non esiste).
Dopo questo ho creato la maschera di inserimento dati.
esegui la procedura guidata di nuova maschera collegando (all'inizio della procedura) alla tabella dati_auto selezionando tutti i campi escluso L'ID lascia tutto per default (le opzioni grafiche etc) avrai così una maschera collegata direttamente alla tabella dati.
Cosa significa questo? Che all'apertura della maschera tu puoi andare sia a modificare i dati preesistenti che aggiungere nuovi record.
Noterai che, all'apertura, la maschera si posizionerà sul primo record della tabella e si deve cliccare sulla freccetta con asterisco in basso per aggiungere un nuovo record (in fondo alla tabella), cosa, questa, che ho reputato fastidiosa per una maschera di inserimento dati quindi ho messo un codice VBA nel Form di apertura della maschera che punta direttamente al nuovo record,
il codice in questione è questo
Codice: Seleziona tutto
Private Sub Form_Load()
DoCmd.GoToRecord , , acNewRec
End Sub

Il codice è molto intuitivo
Do.Cmd (esegui comando), GoToRecord (vai a record), acNewRec (nuovo record)
Ora all'apertura della maschera hai tutti i campi maschera vuoti pronti per essere compilati
Una volta digitati il record è già registrato, se chiudi con la X (in alto a destra) la maschera si chiude e il record lo troverai nella tabella Dati_auto. Se devi inserire un altro record devi riaprire di nuovo la maschera oppure premere il pulsate freccia con * nella barra in basso della maschera ma per agevolare gli utenti ho preferito mettere un comando Registra che esegue lo stesso comando del Form all'apertura
Codice: Seleziona tutto
Private Sub Registra_Click()
 DoCmd.GoToRecord , , acNext
End Sub

La maschera in sé e per sé sarebbe finita ma se ci mettiamo nei panni di chi digita i dati che deve inserire l'importo della multa con valore in un range minimo e massimo cosa fa? Va ad aprire la tabella codice, per cercare il codice multa, e sapere quale somma deve inserire? Ho reputato tutto questo troppo dispersivo e allora ho creato due campi Minimo e Massimo (campi non collegati a nessuna tabella, quindi non di input ma di output).
Per fare questo ho fatto la query QImporto con questo codice
Codice: Seleziona tutto
SELECT Codici_infrazioni.Importo_minimo AS minimo, Codici_infrazioni.Importo_massimo AS massimo
FROM Codici_infrazioni
WHERE (((Codici_infrazioni.Codice_infrazione)=[forms]![MInp_Dati_auto]![Codice_infrazione]));

In effetti è una semplice query su tabella Codici_infrazioni che filtra l'importo minimo e l'importo massimo
Dove (Where) Il codice_infrazione corrisponde al campo della maschera con nome Codice_Infrazione, il che significa che quando la maschera è aperta e il campo codice infrazione assume un valore (esistente nell'elenco dei codici) la query fornirà il suo importo minimo e massimo.
Ora si tratta solo di farlo visualizzare nei due campi,
per fare questo ho inserito una macro nell’aggiornamento del campo da digitare (Codice_infrazione della maschera)
Codice: Seleziona tutto
Private Sub Codice_infrazione_BeforeUpdate(Cancel As Integer)
Me.Minimo = (DMax("Minimo", "QImporto"))
Me.Massimo = (DMax("Massimo", "QImporto"))

Me.PuntiPat = (DMax("Punti_patente", "QPuntiPat"))
End Sub

Le prime due righe si riferiscono agli importi minimo e massimo mentre la terza riga ai punti patente che utilizza lo stesso sistema utilizzando, però, la query "QPuntiPat" in questo caso viene riempito il campo “PuntiP" collegato alla tabella Dati_auto, quindi questa macro mette i valori delle query nei campi informativi (range importi min e max) e di input (punti patente).
Ho messo un Punto Interrogativo (?) per aprire direttamente la tabella Codici_Infrazioni e agevolare così l'utente alla sua consultazione
Ora la maschera è completata.

Passiamo ai report
Anche per questi è utile utilizzare la procedura guidata (forse più di tutti gli altri oggetti del database)
Un report lo dice il termine stesso "Rapporto", Referto, riportare quindi i dati in un formato scelto dall'utente a seconda dell'esigenza.
Puoi fare un report di una tabella e vedere il tuo bel rapportino già impaginato e idoneo per essere presentato cosa che invece, non si può dire della stampa di una tabella.
Nel tuo caso però doveva essere un report con una determinata specifica
Report 1 "Costruire un report con le targhe dei veicoli e dei vigili che hanno elevato multe per divieto di sosta. "
quindi non essendo il report indicato per filtrare i "divieti di sosta" ho creato una query che lo facesse "QMultaDDS":
Codice: Seleziona tutto
SELECT QDatiMulta.Targa, QDatiMulta.Vigile, QDatiMulta.Descrizione_breve
FROM QDatiMulta
WHERE QDatiMulta.Descrizione_breve = "Divieto di Sosta";

Come vedi il filtro Where chiede che il campo sia "Divieto di Sosta"
e poi ho creato il report su questa query.

Infine il secondo report richiesto era:
"Costruire un report delle multe elevate da un determinato vigile "
Non sapendo quale vigile dovessi filtrare ho messo una variabile non conosciuta dal Database (NomeVigile) e lì la query si blocca chiedendo il valore del parametro
Codice: Seleziona tutto
SELECT QDatiMulta.Veicolo, QDatiMulta.Targa, QDatiMulta.Proprietario, QDatiMulta.Data, QDatiMulta.Luogo, QDatiMulta.Codice_infrazione, QDatiMulta.Multa, QDatiMulta.PuntiP, QDatiMulta.Vigile, QDatiMulta.Importo_minimo, QDatiMulta.Importo_massimo, QDatiMulta.Punti_patente, QDatiMulta.Descrizione_breve, QDatiMulta.Descrizione_dettagliata
FROM QDatiMulta
WHERE QDatiMulta.Vigile = NomeVigile;

Quando il report attiva la query, la query chiede il valore mancante e, una volta inserito, la query fornirà tutti i dati richiesti e il Report sarà completo.

Ma un buon libro sui database no, eh? :aaah

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Access] Progettare base di dati, modello ER

Postdi pcexe » 13/07/09 15:11

Non pensavo fosse così complesso access, addirittura anche in VBA.... Caspita.... Grazie infinitamente per la tua pazienza e il grande aiuto che mi hai dato.... Grazie ancora!!!! ;)
pcexe
Utente Junior
 
Post: 20
Iscritto il: 10/07/09 15:42

Re: [Access] Progettare base di dati, modello ER

Postdi Flash30005 » 13/07/09 17:20

pcexe ha scritto:Non pensavo fosse così complesso access, addirittura anche in VBA.... Caspita.... )


Si infatti puoi accedere al VBA da Strumenti > Macro > Visual Basic Editor così potrai vedere le macro che ho utilizzato nel database che ti ho inviato

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "[Access] Progettare base di dati, modello ER":


Chi c’è in linea

Visitano il forum: Nessuno e 15 ospiti

cron