Newsgroup: it.comp.appl.access
Titolo: interrogazione database

Ho un database da inserire in un applicazione da far girare su un cd-rom.
La mia esigenza č di effettuare delle query su due campi (campo1 e campo2)
utilizzando un menu a tendina e prevedendo per tutti e due i campi anche il
valore "tutti". Essendo molto OT in questo campo non saprei da dove
cominciare. Mi date un aiuto?
Grazie. Antonio


Prima di tutto verifichiamo se ho ben compreso il tuo problema.
In una query di selezione (che potrebbe chiamarsi Query1) hai due campi
(Campo1 e Campo2) e vuoi impostare i criteri di selezione di questi due
campi tramite due caselle combinate (i tuoi menu a tendina che chiameremo
Combo1 e Combo2) che si trovano in una maschera (Maschera1); aprendo le due
caselle combinate vuoi che ti compaiano anche il valore "Tutti".
Dò per scontato che esista una tabella TAB1 così articolata:
Campo1        Chiave primaria
Desc1            Descrizione di Campo1 che ti comparirà in Combo1
e contenente tutti i valori possibili di Campo1, ed una tabella TAB2 così
articolata:
Campo2        Chiave primaria
Desc2            Descrizione di Campo2 che ti comparirà in Combo2
e contenente tutti i valori possibili di Campo2, ed infine esiste una
tabella
TAB3 che contiene anche Campo1 e Campo2; Query1 ha come origine TAB3:
Supponiamo infine che nel corpo di Maschera1 vuoi vedere i record
selezionati con Query1.
Se questo è il tuo problema, questa è la mia soluzione.
Creati una query (di nome QueryC1) che abbia il seguente codice SQL:
SELECT  Null As Campo1, "<Tutti>" As Desc1
FROM TAB1
UNION SELECT TAB1.Campo1, TAB1.Desc1
FROM TAB1;
Creati inoltre una query (di nome QueryC2) che abbia il seguente codice SQL:
SELECT  Null As Campo2, "<Tutti>" As Desc2
FROM TAB2
UNION SELECT TAB2.Campo2, TAB2.Desc2
FROM TAB2;
Ora creati Maschera1 e fai in modo che abbia come "Origine record" Query1;
nel corpo di Maschera1 inserisci tutti i controlli associati ai campi di
Query1 che vuoi vedere.
Nell'intestazione di Maschera1 inserisci due caselle combinate non associate
alle quali dai rispettivamente il nome di Combo1 e Combo2.
Come "Origine riga" di Combo1 scrivi QueryC1 e Come "Origine riga" di Combo2
scrivi QueryC2.
Nella riga "Criteri:" di Query1 relativa a Campo1 scrivi:
    Like  IIF(IsNull ([Forms]![Maschera1]![Combo1]; "*"
;[Forms]![Maschera1]![Combo1])
Nella riga "Criteri:" di Query1 relativa a Campo2 scrivi:
    Like  IIF(IsNull ([Forms]![Maschera1]![Combo2]; "*"
;[Forms]![Maschera1]![Combo2])
Apri Maschera1 ed effettua le selezioni sulle due caselle combinate.
Roberto


[CUT]

Scusami ma ho commesso degli errori:
Il codice SQL di QueryC1 deve essere:
 SELECT  0 As Campo1, "<Tutti>" As Desc1
 FROM TAB1
 UNION SELECT TAB1.Campo1, TAB1.Desc1
 FROM TAB1;
e il codice SQL di QueryC2 deve essere:
 SELECT  0 As Campo2, "<Tutti>" As Desc2
 FROM TAB2
 UNION SELECT TAB2.Campo2, TAB2.Desc2
 FROM TAB2;
e nella riga "Criteri:" di Query1 relativa a Campo1 scrivi:
     Like  IIF([Forms]![Maschera1]![Combo1]=0;
"*";[Forms]![Maschera1]![Combo1])
e nella riga "Criteri:" di Query1 relativa a Campo2 scrivi:
     Like  IIF([Forms]![Maschera1]![Combo2]=0;
"*";[Forms]![Maschera1]![Combo2])
Infine a fronte dell'evento "Dopo aggiornamento" sia di Combo1 che di Combo2
scrivi il codice VBA:
     Me.Requery
Scusami ancora per gli errori contenuti nel mio primo messaggio
Roberto

Ti ringrazio moltissimo per il tuo puntuale interessamento. Antonio