Newsgroup: it.comp.appl.access
Titolo: controllo su data e ora

ciao a tutti,
sto sviluppando un sito per un autonoleggio. Deve essere possibile prenotare
un'auto solo se non è stata già noleggiata da un altro utente in una
determinata data e ad una certa ora. In pratica una volta che l'utente ha
inserito i dati della sua prenotazione devo eseguire un controllo su tutte
le prenotazioni per verificare che quell'auto sia disponibile...Se l'auto è
disponibile posso quindi procedere con l'aggiunta della prenotazione al
database...
Il mio problema è: qual è la sintassi corretta per eseguire questo controllo
per data (datariconsegna) e ora (orariconsegna)???
La data è in formato Data/ora e del tipo 05/09/2002
ciao!
Maurizio Manna
www.f1grandprix.it

 ha scritto nel messaggio
news:BlFd9.64956$pX1.2...@news2.tin.it...

La prima cosa che ti consiglio è quella di inserire in un unico campo
Data/ora sia la data che l'orario: questo ti semplificherà di molto le cose.
Se la tabella che contiene i dati si chiama Prenotazioni ed ha una struttura
simile a questa:
IDPrenotazione                      Contatore e chiave primaria
ID_Auto                                Numerico
DataOraInizioPrenotazione    Data/ora
DataOraRiconsegna              Data/ora
ecc. ecc.
Imposta la proprietà Maschera di input dei campi DataOraInizioPrenotazione e
DataOraRiconsegna a:
90/90/0000\ 90:90;0;_
Imposta la proprietà Formato dei campi DataOraInizioPrenotazione e
DataOraRiconsegna a:
gg/mm/aaaa hh:nn
Creati una maschera con visualizzazione a Maschera singola che abbia come
origine record la tabella Prenotazioni; fai in maniera che tale maschera
contenga almeno tre caselle di testo associate ai campi ID_Auto,
DataOraInizioPrenotazione e DataOraRiconsegna e che le caselle di testo
abbiano lo stesso nome dei campi cui sono associate.
A fronte dell'evento "Prima di aggiornare" della tua maschera genera il
seguente codice VBA:
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim Criterio As String
Criterio = "ID_Auto =" & Me!ID_Auto & _
" And ((DataOraInizioPrenotazione<=#" & _
Format(Me!DataOraInizioPrenotazione, _
"mm/dd/yyyy hh:nn") & "# And DataOraRiconsegna>=#" & _
Format(Me!DataOraInizioPrenotazione, "mm/dd/yyyy hh:nn") & _
"#)Or(DataOraInizioPrenotazione>=#" & _
Format(Me!DataOraInizioPrenotazione, "mm/dd/yyyy hh:nn") & _
"# And DataOraInizioPrenotazione<=#" & _
Format(Me!DataOraRiconsegna, "mm/dd/yyyy hh:nn") & "#))"
If IsNull(DLookup("IDPrenotazione", "Prenotazioni", Criterio)) Then
    MsgBox "Prenotazione dell'Auto " & Me!ID_Auto & " accettata"
Else
    MsgBox "Prenotazione dell'Auto " & Me!ID_Auto & " NON accettata"
    Cancel = True
    Me.Undo
    Me!ID_Auto.SetFocus
End If
End Sub
E già che ci sei controlla la congruità delle due date generando a fronte
dell'evento "Prima di aggiornare" del controllo DataOraRiconsegna il
seguente codice VBA:
Private Sub DataOraRiconsegna_BeforeUpdate(Cancel As Integer)
If Me!DataOraRiconsegna <= Me!DataOraInizioPrenotazione Then
MsgBox "Data di riconsegna errata"
Cancel = True
Me!DataOraInizioPrenotazione.Undo
End If
End Sub
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

il problema è che sto utilizzando ASP non access...l'applicativo gira su
internet...il controllo devo farlo con SQL...
ho provato questa query:
<% Set rs = Server.CreateObject ("ADODB.Recordset")%>
<%SQL2 = "SELECT * FROM prenotazione WHERE auto like '"& auto &"%' AND
datariconsegna >= dataconsegna AND orarichiesta>orarioconsegna"
rs.Open strsql,OBJdbConn
IF rs.EOF Then
response.write("Macchina disponibile")
'aggiungere query di inserimento prenotazione
Else
response.write("Macchina non disponibile")
End If%>
ma mi da questo errore:
ADODB.Recordset error '800a0bb9'
Arguments are of the wrong type, are out of acceptable range, or are in
conflict with one another.
ciao

 il problema è che sto utilizzando ASP non access...
[CUT]
Mi dispiace, non conosco ASP e pertanto non posso esserti di aiuto.
