22 messaggi dal 03 settembre 2003
Ciao ragazzi ho un problema strano

allora, io vorrei che un utente possa prenotare solo una volta al giorno.
Questo codice controlla in base alla data odierna se l?utente ha gia prenotato:

 
sqlString ="SELECT * FROM Table WHERE userID="& userID &" AND data=#"&  Date() &"#" 
Set objRS = Server.CreateObject("ADODB.Recordset")
Set objRS = objConn.Execute(sqlString)
IF NOT objRS.EOF THEN
response.write "hai gia prenotato"
ELSE
'inserisco la richiesta di prenotazione
sqlString = "INSERT INTO Table (userID, username, seat, data "&_
")VALUES ("& userID &", '"& username &"', "& valoreNumSeat &", NOW())"


pero? succede che il codice di controllo ignora la prenotazione con la data odierna gia presente nel database percio? l?utente puo? prenotare quanto glipare cosa che non deve accadere.

Dove sbaglio?

Ps utilizzo database Access
879 messaggi dal 09 luglio 2002
www.i-studio.it
Probabilmente si tratta di un problema di "formato" della data in Access e in ASP.
Ti consiglio di far fare il controllo direttamente ad access, senza usare la sintassi ASP:
sqlString ="SELECT * FROM Table WHERE userID="& userID &" AND data= Date()"

La funzione Date esiste anche in Access!

Ciao
Alex

Internetworking Studio Srl
www.i-studio.it
20 messaggi dal 28 febbraio 2002
Probabilmente il valore che restituisce la funzione Now() non è uguale alla funzione Date().
Prova ad usare le funzioni come Day Month e Year per inserire e ricercare nel DB la data nel formato che preferisci.

es.
data=day(now()) & month(now())&year(now())

Spero di esserti stato utile.
Ciao
22 messaggi dal 03 settembre 2003
grazie a tutti,

matteo, ho provato le funzioni Day Month Year
pero' una cosa strana quando inserisco la data nel database la vedo sbagliata per esempio cosi 28/08/8996
come mai?

x alex
ho seguito il tuo consiglio il formato di data e' corretto


non so veramente cosa fare :(
879 messaggi dal 09 luglio 2002
www.i-studio.it
Un altro problema che potresti avere e' nel formato del tuo campo data. Cioe' se il campo e' di tipo "DateTime", allora quando inserisci il valore in realta' Access inserisce una data concatenata ad un orario. Se ad esempio usi now per inserire, lui inserira' 25/9/2003 15:50... se invece inserisci direttamente solo la data, il sistema inserira' 25/9/2003 00:00.

Poi, quando vai a fare il controllo con la data odierna potrebbe non restituirti i record perche' le date non sono "esatte".

Ti suggerisco di fare in questo modo:
sqlString ="SELECT * FROM Table WHERE userID="& userID &" AND Day(data) & "/" & Month(data) & "/" & Year(data) = Day(Date()) & "/" & Month(Date()) & "/" & Year(Date())" 

Cosi' dovrebbe funzionare...

Ciao
Alex

Internetworking Studio Srl
www.i-studio.it
22 messaggi dal 03 settembre 2003
Hai ragione Alex, nella stringa INSERT INTO inserivo la data usando NOW() e poi facevo il controllo con la Date() ... ma che ...sono io

Adesso tutto OK

Grazie 1000 Alex! Sei grande:))

CIAUZ
3.122 messaggi dal 16 maggio 2002
Se vuoi impedire ad ogni costo che un utente possa prenotare due volte in uno stesso giorno basta che metti in chiave lo userid e la data (un campo con solo la data, non anche l'ora): non sarà più possibile inserire nel database una prenotazione dello stesso cliente nello stesso giorno, indipendentemente da come poi costruirai l'applicazione.
Modificato da Raynor il 25 settembre 2003 16.25 -

The day Microsoft makes something that doesn't suck
is probably the day they start making vacuum cleaners.

Get caught!
Get caught again!
22 messaggi dal 03 settembre 2003
Grazie Raynor, mi piace la tua idea non ci avevo pensato

pero' in Access puoi mettere in chiave solo un campo o mi sfugge qualcosa

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.