PDA

View Full Version : Quesito su Access (Per i più esperti una vera propria sfida)


Musketeer Fly
11-11-2003, 17:42
Premetto che non è mia intenzione fare pubblicità, ma i nomi che utilizzerò servono per spiegare meglio quello che desidero creare.

Sarei intenzionato a creare una tabella 'Archivio' con i seguenti campi:
macchina - Testo (nel quale poter inserire "4x4", "Auto sportiva", "Utilitaria", "Rappresentanza", …)
marca - Testo (nel quale poter inserire "Fiat", "Opel", "Ford",…)
modello - Testo (nel quale poter inserire "Punto", "Panda", "Espace", "Corolla"…)
colore - Testo (nel quale poter inserire "Bianco", "Blu", "Blu elettrico", "Grigio"…)

Una volta creata la tabella passerei alla creazione della relativa maschera per inserire i dati (attraverso l' autocomposizione). A questo punto mi sorge un dubbio: se ho già inserito come "macchina" '4x4' e volessi reinserirlo digitando solamente la prima lettera / cifra '4' o ancora meglio senza dover digitare la parola, come posso fare? Quali modifiche mi consigliereste? Vi chiedo questo perché non vorrei aver il caso '4x4' e '4 x 4' che giustamente il database vede come due cose diverse.

Andando avanti, mi servirebbe creare una query o tabella o altro (con gli stessi campi descritti prima o con riferimento a questi) e subito dopo, costruita la maschera, poter riselezionare i dati inseriti, ma in modo condizionato. Mi spiego meglio:
Se nella tabella 'Archivio' ho creato i seguenti record
- Utilitaria / Fiat / Punto / Bianca
- Rappresentanza / Alfa Romeo / 145 / Nera (non so se esiste)
- Auto sportiva / Fiat / Barchetta / Gialla
- Utilitaria / Fiat / Stilo / Grigio
- Utilitaria / Lancia / Y / Gialla
- Utilitaria / Fiat / Punto / Nera

Vorrei che nella query o tabella o altro creata selezionando il dato dal campo "macchina" ottenga in ordine crescente 'Auto sportiva', 'Rappresentanza', 'Utilitaria' (in particolare solo una voce per Utilitaria e per altri casi futuri che non ho inserito); in base alla selezione del campo "macchina", possa scegliere solamente tra 'Fiat' e 'Lancia' (sempre in questo caso con una sola voce per 'Fiat'); passando al campo "modello", se ho scelto 'Fiat' ,possa selezionare solamente i modelli 'Punto' e 'Stilo' (sempre in questo caso con una sola voce per 'Punto'); se ho selezionato 'Stilo', in questo caso possa scegliere solamente il "colore" 'Giallo' (l' unico che ho inserito).
Come avete capito vorrei avere una maschera che sia valida per ogni tipo di inserimento e composizione in modo condizionato o filtrato.

!!!!! Lo so che non è una cosa semplice, ma confido nelle vostre ottime capacità !!!!!

Inoltre sia possibile inserire dei dati nei campi in quest' ultima query o tabella o altro creata senza andare a modificare la tabella dalla quale sto prelevando i dati.

Attenderò i vostri suggerimenti (che siano i più chiari possibili dato che non vorrei commettere errori dovuti ad una mia cattiva comprensione)

Musketeer Fly
12-11-2003, 00:12
Mi sono dimenticato di dire che:
la maschera della tabella 'Archivio' è una sottomaschera (figlia) di una maschera 'Riassunto' (madre) i cui campi non hanno imoportanza. Per creare una relazione tra le due maschere, bisogna che vi sia nella maschera un campo 'Contaore' - Chiave primaria e nella sottomaschera un campo di tipo 'Numerico'. Definito questo ho bisogno che la query o tabella o altro creata debba essere una sottomaschera (figlia) di una maschera Riepilogo' (madre).
A questo punto si prospetta questa situazione:
che il primo record della Maschera 'Riepilogo' (madre) contiene la sottomaschera (figlia) e qui bisogna risolvere il problema che ho descritto nella prima discussione.

Musketeer Fly
12-11-2003, 12:22
Forse con la prima risposta che ho dato, vi ho messo più confusione in testa. Mi spiego meglio:

Vorrei creare una Database per raccogliere tutti i modellini d' auto dei miei amici. Per far questo, ho bisogno di creare una Tabella 'Nominativi' nella quale far comparire solamente due campi:
IDNominativo - Contatore / Chiave primaria
Nome - Testo (nel quale poter inserire "Marco", "Pietro",…)

Subito dopo costruirei un nuova Tabella 'Archivio' con i seguenti campi:
IDNominativo - Numerico (come riferimento alla Tabella 'Nominativi')
macchina - Testo (nel quale poter inserire "4x4", "Utilitaria" …)
marca - Testo (nel quale poter inserire "Fiat", "Opel", "Ford",…)
modello - Testo (nel quale poter inserire "Punto", "Panda",…)
colore - Testo (nel quale poter inserire "Bianco", "Blu",…)
pagata - Numerico / Valuta (nel quale poter inserire " € 20",…)

Terminate le due Tabelle, passerei alla creazione delle corrispondenti maschere, ma con un accorgimento (che la maschera della Tabella 'Nominativi' sia la maschera *Madre* e che la maschera della Tabella 'Archivio' sia la sottomaschera *Figlia* della maschera *Madre*) per creare tra le due maschere generate una relazione.

Poniamo che io abbia aggiunto dei dati nelle rispettive maschere:

Maschera 'Nominativi'
1° record
IDNominativo "1"
Nome "Marco"
Maschera 'Archivio'
1° record
macchina "Utilitaria"
marca "Fiat"
modello "Punto"
colore "Bianco"
pagata " € 20"

2° record
macchina "Rappresentanza"
marca "Alfa Romeo"
modello "145" (non so se esiste)
colore "Nero"
pagata " € 35"

3° record
macchina "Utilitaria"
marca "Fiat"
modello "Punto"
colore "Giallo"
pagata " € 30"

4° record
macchina "Utilitaria"
marca "Fiat"
modello "Stilo"
colore "Grigio"
pagata " € 45"

Maschera 'Nominativi'
2° record
IDNominativo "2"
Nome "Pietro"
Maschera 'Archivio'
1° record
macchina "Utilitaria"
marca "Lancia"
modello "Y"
colore "Verde"
pagata " € 24"

2° record
macchina "Utilitaria"
marca "Fiat"
modello "Punto"
colore "Giallo"
pagata " € 31"

N.B. Se ho già inserito come "macchina" '4x4' e volessi reinserirlo digitando solamente la prima lettera / cifra '4' o ancora meglio senza dover digitare la parola, come posso fare? Quali modifiche mi consigliereste? Vi chiedo questo perché non vorrei aver il caso '4x4' e '4 x 4' che giustamente il database vede come due cose diverse.

Adesso mi servirebbe creare una nuova tabella 'Vendite' con in seguenti campi:
IDVendite - Contatore / Chiave primaria
acquirente - Testo (nel quale poter inserire nomi diversi da quelli della Tabella 'Nominativi')
dataVendita - Data/ora (nel quale poter inserire "11/12/2003",…)

Adesso non so cosa creare: o una query o una tabella o altro con nome 'Oggetto' che prelevi i dati inseriti dalla Tabella 'Archivio', ma in modo condizionato (ho pensato di utilizzare delle Caselle Combinate, faccio bene?). Una volta generata passerei alla creazione con autocomposizione della Maschera 'Vendite' (Madre) e della sottomaschera 'Oggetti' (Figlia)
A questo punto in base agli inserimenti fatti, mi troverei nella seguente situazione:

Maschera 'Vendite'
1° Record
IDVendite "1"
acquirente "Giovanni"
dataVendita "15/11/2003"
Maschera 'Oggetto'
1° Record

Selezionando il dato dal campo "macchina" (che posso aver inserito come 1° Record o 2° Record della Maschera 'Nominativi') ottenga in ordine crescente Rappresentanza, Utilitaria (in particolare solo una voce per Utilitaria e per altri casi futuri che non ho inserito); in base alla selezione del campo "macchina" (in questo caso Utilitaria), possa scegliere solamente tra Fiat e Lancia (sempre in questo caso con una sola voce per Fiat) e non Alfa Romeo; passando al campo "modello", se ho scelto Fiat ,possa selezionare solamente i modelli Punto e Stilo (sempre in questo caso con una sola voce per Punto); se ho selezionato Punto, possa scegliere solamente come "colore" Bianco e Giallo (sempre in questo caso con una sola voce per Giallo); infine se ho scelto Giallo, possa selezionare solamente € 30 e € 31 dal campo "pagata".

Allora il 1° Record della sottomaschera 'Oggetto' sarà
macchina "Utilitaria"
marca "Fiat"
modello "Punto"
colore "Giallo"
pagata " € 30"

Per adesso mi accontenterei dei vostri suggerimenti su questi miei quesiti