Newsgroup: it.comp.appl.access
Titolo: query su non corrispondenti

Buona sera a tutto il NG,
č la prima volta che intervengo anche se da alcuni giorni bazzico il NG e il
sitocomune - complimenti, molto ben fatto ed interessante.
Cerco di esporvi in modo chiaro il mio problema: ho un DB che in pratica
registra delle prenotazioni giornaliere. Vorrei che a seconda del giorno
venissero visualizzate (es in sottomaschera) le ore libere e i rispettivi
posti disponibili (due caselle di riepilogo che eventualmente
interagiscono).
Al momento ho risolto il problema in modo un po' macchinoso ed utilizzando
le caselle combinate: in pratica, selezionata la data, nella casella
combinata delle ore potrň scegliere solo tra quelle libere ricavate da una
query di ricerca duplicati e da un'altra di ricerca dei non corrispondenti.
Selezionata l'ora ripeto le due query per ottenere i dati tra cui scegliere
nella casella dei posti.
In pratica, riassumendo ho una tabella con le ore (dalle 8 alle 18 tutti i
giorni);
una tabella dei posti (dal n.1 al n.4)
Una tabella prenotazioni coi campi [data],[nome],[ora],[posto]
La query di ricerca duplicati č filtrata in base a 4 (n.posti).
Scusate la lunghezza del post, spero si capisca che alla fine, partendo
dalla tabella delle prenotazioni voglio ricavare quelle delle disponibilitŕ.
Grazie a tutti
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Grazie a tutti
Se la tabella con le ore si chiama tblOrari e contiene un solo campo di tipo
Data/ora chiamato Orari che è anche chiave primaria della tabella.
Se detta tabella contiene un record per ogni orario prenotabile.
Se la tabella dei posti si chiama tblPosti e contiene un solo campo di tipo
Numerico chiamato Posti che è anche chiave primaria della tabella.
Se detta tabella contiene un record per ogni posto prenotabile (4 record nel
tuo esempio).
Se la tabella prenotazioni si chiama tblPrenotazioni ed ha la seguente
struttura:
ID                    Contatore e chiave primaria
DataPren          Data/ora
OraPren           Data/ora
PostoPren        Numerico
NomeCliente    Testo
Creati una query chiamata Query2 che abbia il seguente codice SQL:
SELECT Pippo.MiaData, Pippo.Orari, tblPosti.Posti
FROM [SELECT CDate(Forms!Maschera1!DataRicerca) AS MiaData, tblOrari.Orari
FROM tblOrari;]. AS Pippo, tblPosti;
Creati quindi una query chiamata Query3 che abbia il seguente codice SQL:
SELECT Query2.Orari, Query2.Posti
FROM Query2 LEFT JOIN tblPrenotazioni ON (Query2.Posti =
tblPrenotazioni.PostoPren) AND (Query2.Orari = tblPrenotazioni.OraPren) AND
(Query2.MiaData = tblPrenotazioni.DataPren)
WHERE (((tblPrenotazioni.NomeCliente) Is Null));
Ora creati una maschera non associata chiamata Maschera1 e nella quale
inserisci una casella di testo non associata chiamata DataRicerca e nella
quale digiterai la data per la quale vuoi verificare la disponibilità di
posti liberi.
Nella maschera inserirai due caselle di riepilogo non associate chiamate
rispettivamente ElencoOrari e ElencoPosti; ambedue le caselle di riepilogo
debbono avere una sola colonna, NON debboneo avere alcuna Origine riga e
debbono avere la proprietà Tipo origine riga impostata a Tabella/query.
A fronte dell'evento "Dopo aggiornamento" della casella di testo DataRicerca
genera il seguente codice VBA:
Private Sub DataRicerca_AfterUpdate()
Me!ElencoOrari.RowSource = _
"SELECT Orari FROM Query3 GROUP BY Orari;"
Me!ElencoOrari.Requery
End Sub
A fronte dell'evento "Su cluc" della casella di riepilogo ElencoOrari genera
il seguente codice VBA:
Private Sub ElencoOrari_Click()
Me!ElencoPosti.RowSource = _
"SELECT Posti FROM Query3 " _
& "WHERE Orari =#" & _
Me!ElencoOrari & "#;"
Me!ElencoPosti.Requery
End Sub
A questo punto apri Maschera1 e digita nella casella di testo la data della
quale ti interessa conoscere la disponibilità di prenotazioni; così facendo
in ElencoOrari ti compariranno solo gli orari che per quella data è
possibile fare prenotazioni; con un clic su un orario della casella di
riepilogo ElencoOrari nella casella di riepilogo ElencoPosti ti comparirà
l'elenco dei posti liberi per quella data per quell'orario.
Spero che fosse quello che ti serviva.
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 orario resta sempre vuota... ma ho capito il concetto.
Per scrupolo ho provato a realizzare un esempio con la soluzione che ti ho
suggerito ed a me funziona tutto.
Se vuoi posso inviarti al tuo indirizzo e-mail il mio esempio.
