Due utenti non possono prenotare lo stesso spazio nello stesso giorno ...

lunedì 10 novembre 2014 - 15.19
Tag Elenco Tags  Access (.mdb)  |  Office 2010

D0nPipp0 Profilo | Newbie

Buongiorno a tutti!
Come si intuisce non ho grandi esperienze con Access. Sto tuttavia realizzando un db per l'oratorio e mi trovo in difficoltà nel l'impostare gli appuntamenti. Mi spiego:
ho preparato :
tabella data: ID con data, ora inizio, ora fine
tabella spazi prenotabili: ID spazi,
tabella prenotazioni: ID cognome. nome, ID spazi, ecc.
- L'utente può prenotare più spazi
- Due utenti non possono prenotare lo stesso spazio nello stesso giorno con lo stesso orario.
Quest'ultimo dato mi è difficile impostarlo.
Qualcuno può suggerirmi come fare?
Un sentito grazie
Glauco

gsistemi Profilo | Junior Member

Prima di salvare fai una query controllando se un altro utente ha già prenotato quello spazio, non riesco a vedere il DB perchè non ho la versione aggiornata di access e non ho capito come colleghi le tre tabelle che hai scritto ma la query dovrebbe essere più o meno così:

select count(spazi.id) from spazi where inizio >= [valore inizio inserito] or fine <= [valore fine inserito]

Se ti restituisce un valore maggiore di 0 significa che lo spazio è già stato prenotato.

D0nPipp0 Profilo | Newbie

Buona sera! Intanto ringrazio per la sollecita risposta!
Provo subito la soluzione proposta.
Dato che però non sono pratico e sto imparando, rispondo dicendo che le tre tabelle le ho così collegate:

tabella Spazi1 e tabellaspazi2 (1 a molti) con tabella data che è collegata (1 a molti) a tabella prenotazioni alla quale è anche collegata (1 a molti) la tabella tipologia richiedenti.
Può andare bene?
In altre prove avevo fatto altri tipi di collegamenti addirittura separando i tipi di spazi senza usare le caselle combinate ma mettendoli tutti in tabella prenotazioni.

Ringrazio ancora per l'aiuto che ho ricevuto
Glauco

D0nPipp0 Profilo | Newbie

Salve di nuovo.
Ho provato ma ci sono problemi nel fare la query. Il problema è che fa il controllo ma solo sul primo dato. Forse ho capito male. Dove applico la query? Sono proprio a zero, scusa.

gsistemi Profilo | Junior Member

Prova a sostituire or con and, così:

select count(spazi.id) from spazi where inizio >= [valore inizio inserito] and fine <= [valore fine inserito]

D0nPipp0 Profilo | Newbie

Ancora grazie.
Provo

Ciao, Glauco

D0nPipp0 Profilo | Newbie

Buongiorno.
Penso che usare la query non mi sia molto utile in quanto è durante l'introduzione dei dati in tabella che il sistema deve impedire la prenotazione in quella data ed in quell'orario. Come posso fare?
Grazie

gsistemi Profilo | Junior Member

la query puoi applicarla al momento in cui salvi, oppure appena inserita la data di prenotazione, oppure se hai un elenco dei periodi disponibili fai il controllo con la query che ti ho detto. In questo ultimo caso potresti rendere disponibili solo i periodi liberi

D0nPipp0 Profilo | Newbie

Ti ringrazio per la pazienza.
Glauco
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5