Salve,
ho un database access in cui c'è presente una tabella mensa con i seguenti campi: tipoPato, DataPasto, Ref_Ospite.
La maschera relativa, funziona in modo che all'inserimento del Ref_ospite, si registra il pasto.
Adesso il mio problema è che il secondo giorno, quando effettuo di nuovo il pasto per lo stesso ospite,
mi compare l'alert "pasto già effettuato". Posto di seguito lo script
[code]
Private Sub IDOspite_AfterUpdate()
On Error GoTo Err_IDOspitePasto
Dim MsgAlert As Variant
Dim TipoPasto As String
Dim OraAttuale As Date
'If Not IsNull(Me![IDOspite].Value) Then .....eventuale controllo da inserire
Dim inizioColazione As Date
Dim fineColazione As Date
Dim inizioPranzo As Date
Dim finePranzo As Date
Dim inizioCena As Date
Dim fineCena As Date
inizioColazione = Format(#6:00:00 AM#, "h:m:s")
fineColazione = Format(#11:14:00 AM#, "h:m:s")
inizioPranzo = Format(#11:15:00 AM#, "h:m:s")
finePranzo = Format(#4:14:00 PM#, "h:m:s")
inizioCena = Format(#4:15:00 PM#, "h:m:s")
fineCena = Format(#10:00:00 PM#, "h:m:s")
OraAttuale = Format(Me.OraAttuale, "h:m:s")
TipoPasto = ""
If (inizioColazione < OraAttuale) And (OraAttuale <= fineColazione) Then
TipoPasto = "colazione"
ElseIf (inizioPranzo < OraAttuale) And (OraAttuale <= finePranzo) Then
TipoPasto = "pranzo"
Else
TipoPasto = "cena"
End If
With Me.Recordset
.FindFirst "[ID] = " & Str(Nz(Me![IdOspite].Value, 0))
If .NoMatch Then
MsgBox "Identificativo ospite non trovato"
Me.Nome = ""
Me.Cognome = ""
Me.Nazione = ""
Me.IdOspite = ""
DoCmd.GoToControl ("IDOspite")
Me.Requery
Exit Sub
Else
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open "Select * From Mensa where [ref_ospite] = " & Str(Nz(Me![IdOspite].Value, 0)) & " and TipoPasto ='" & TipoPasto & "'", _
CurrentProject.Connection, adOpenKeyset, adLockOptimistic
If Not rs.EOF Then
MsgBox "Esiste già un pasto (" & TipoPasto & ") per questo ospite."
Me.IdOspite.SetFocus
'Exit Sub
Else
rs.AddNew
rs("ref_ospite") = Me.IdOspite
rs("TipoPasto") = TipoPasto
rs("DataPasto") = Format(Now(), "dd/mm/yyyy")
rs("OraPasto") = Me.OraAttuale
rs.Update
End If
rs.Close
Set rs = Nothing
End If
End With
'End If
DoCmd.GoToControl ("IDOspite")
Exit_IDOspitePasto:
Exit Sub
Err_IDOspitePasto:
MsgBox Err.Description
Resume Exit_IDOspitePasto
End Sub
[\code]
pensate che aggiungendo il ciclo if riguardante la definizione del tipo pasto, in un altro ciclo if riguardante la data, risolvo ? grazie anticipatamente.