10 messaggi dal 28 maggio 2012
Salve,
avrei bisogno di modificare il mio file prenota_mensa.aspx.
La pagina permette ai vari utenti di prenotarsi la colazione,il pranzo e la cena. Tutto questo lo fanno attualmente anche fino alla stessa giornata pero', avrei bisogno di impostare per la data corrente un orario massimo di prenotazione che potrebbe essere le 9 o 9,30.
Qualcuno può aiutarmi grazie.

Vi posto lo script della pagina prenota_mensa.aspx:

Sub riempi_giorni()
Dim conn As New Data.OleDb.OleDbConnection(GetConnectionString("strConn"))
Dim query As String
Dim temp_mensa As Data.OleDb.OleDbDataReader
Dim pren_mensa As Data.OleDb.OleDbDataReader

Dim nr_record As Integer

'cancella i dati precedenti dalla tabella d'appoggio temp_mensa.
conn.Open()
query = "DELETE * FROM temp_mensa WHERE id_dipendente=" & Session.Item("id_dipendente")
Dim cmd As New Data.OleDb.OleDbCommand(query, conn)
temp_mensa = cmd.ExecuteReader
temp_mensa.Close()

Dim data_iniziale, data_finale, data_attiva As Date
Dim x As Short = 0

data_iniziale = CDate(Day(Now) & "/" & Month(Now) & "/" & Year(Now))
data_attiva = DateAdd(DateInterval.Day, 0, data_iniziale)
data_finale = DateAdd(DateInterval.Day, 20, data_attiva)
Label1.Text = "Prenotazione Mensa dal : " & data_attiva & " al : " & DateAdd(DateInterval.Day, 19, data_attiva)

For x = 1 To 20
'scrive nella tabella temp_mensa l'indicazione dei giorni nel campo data
query = "INSERT INTO temp_mensa (id_dipendente, ID, data) VALUES (" & Session.Item("id_dipendente") & "," & x & ", '" & data_attiva & "')"
Dim cmd1 As New Data.OleDb.OleDbCommand(query, conn)
temp_mensa = cmd1.ExecuteReader
data_attiva = DateAdd(DateInterval.Day, 1, data_attiva)
temp_mensa.Close()
Next x
'calcola il numero di prenotazioni esistenti nella tabella generale per l'id_dipendente
query = "SELECT COUNT(*) FROM pren_mensa WHERE id_dipendente=" & Session.Item("id_dipendente") & _
" AND data>=#" & Format(data_iniziale, "MM/dd/yyyy") & "# AND data<=#" & _
Format(data_finale, "MM/dd/yyyy") & "#"
Dim cmd2 As New Data.OleDb.OleDbCommand(query, conn)
nr_record = cmd2.ExecuteScalar

If nr_record > 0 Then
query = "SELECT * FROM pren_mensa WHERE id_dipendente=" & Session.Item("id_dipendente") & _
" AND data>=#" & Format(data_iniziale, "MM/dd/yyyy") & "# AND data<=#" & _
Format(data_finale, "MM/dd/yyyy") & "#"
Dim cmd3 As New Data.OleDb.OleDbCommand(query, conn)
pren_mensa = cmd3.ExecuteReader

'updata nella tabella temporanea le prenotazioni già esistenti
For x = 1 To nr_record
If pren_mensa.Read Then
query = "UPDATE temp_mensa SET colazione =" & pren_mensa("colazione") & ", pranzo=" & pren_mensa("pranzo") & ", cena=" & _
pren_mensa("cena") & " WHERE data=#" & Format(pren_mensa("data"), "MM/dd/yyyy") & "# and id_dipendente=" & Session.Item("id_dipendente")
Dim cmd4 As New Data.OleDb.OleDbCommand(query, conn)
temp_mensa = cmd4.ExecuteReader
temp_mensa.Close()
End If
Next x
pren_mensa.Close()
End If
If Not conn Is Nothing Then
conn.Close()
End If
End Sub

Function doppio_apostrofo(ByVal stringa As String) As String
Dim x As Integer
For x = 1 To Len(stringa$)
If Mid$(stringa$, x, 1) = "'" Then
Return Left$(stringa$, x - 1) & "''" & Right$(stringa$, Len(stringa$) - x)
End If
Next x
Return stringa$
End Function

Function NumToOra(ByVal numero As String) As String
Dim Ora As String
Dim minuti As String
Dim NumToOra2 As String
Ora = CStr(Val(numero) \ 60)
If Len(Ora) = 1 Then
Ora = "0" + Ora
End If
If Len(Ora) = 3 Then
If Left$(Ora, 1) = "0" Then
Ora = Right$(Ora, 2)
End If
End If
minuti = CStr(Val(numero) Mod 60)
NumToOra2 = Ora + ":" + Right$("0" + minuti, 2)
Return NumToOra2
End Function
Modificato da peppecastri il 22 agosto 2012 08.55 -
peppecastri wrote:

avrei bisogno di impostare per la data corrente un orario massimo di prenotazione che potrebbe essere le 9 o 9,30.

non prendertela, troppo codice da guardare e non è così che funzionano i forum.
ad ogni modo, potresti impostare nella tabella da cui prendi le disponibilità (pranzo, cena, colazione) una colonna che contenga l'orario massimo e controllare poi quella in fase di visualizzazione, avvisando l'utente che è oltre il tempo massimo.
.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
10 messaggi dal 28 maggio 2012
Prendersela... per cosa! Anzi chiedo scusa per il papocchio e grazie per la dritta.
10 messaggi dal 28 maggio 2012
Ho aggiunto la colonna con l'orario come mi hai suggerito ma, non riesco a capire come fare il controllo in fase di visualizzazione. Puoi aiutarmi?
Grazie
leggi il valore dalla colonna, lo converti in DataTime e poi fai un semplice operazione. qualcosa tipo

if (DateTime.Now.Subtract(myDate).TotalMinutes >0)
Sei fuori tempo massimo!

(nota che l'operazione l'ho abbozzata al volo, magari è minore di 0 se il tempo passa  )

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
10 messaggi dal 28 maggio 2012
Ho provato ad inserire il codice come suggerito ma non funziona.
cosa sbaglio? la condizione va inserita nella pagina prenota.aspx.vb che ho riportato sopra?
grazie

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.