Buonasera a tutti, sto cercando di risolvere alcuni problemi in un database non realizzato da me ma da una persona molto esperta del settore e che purtroppo da tempo non sento più. Per queste ragioni mi rivolgo a voi esperti.
Spero di esporre bene il mio problema e che le informazioni che vi posto siano esaustive. Dunque:
in una maschera ho un campo testo e una serie di button. In fondo a questa maschera ho i classici pulsanti OK e ANNULLA. Il funzionamento è che al click su uno dei button presenti, il campo testo si riempie del Caption del button stesso oppure ci sarebbe un'altra possibilità e cioè quella di scrivere direttamente nel campo testo. Al click sul button OK in un'altra maschera avviene una sorta di registrazione....ma da questo momento in poi tutto ciò che avviene non è rilevante per il mio problema.
Il codice che vi posto qui di seguito funziona a meraviglia, fino a che mi sono accorto che se nel campo testo inserisco parole con l'apostrofo ('), al click sul button OK, il database va in debug. Cioè se per caso nel campo testo scrivessi L'AQUILA e poi click su OK, il database si blocca.
Allora dando uno sguardo qua e la ho trovato un modo per raggirare il problema e cioè inserendo nel codice
Chr(34). Devo ammettere che funziona, ma purtroppo è sorto un altro problema. Ovvero, se qualora nel campo testo non ci sia scritto nulla, al click su OK dovrebbe partire il Msgbox presente nel codice, che recita
"Occorre premere un PULSANTE oppure indicare un RICHIEDENTE.", vbExclamation, "Attenzione". Invece il Msgbox non parte, anzi la registrazione nell'altra maschera avviene comunque, anche se i campi rimangono vuoti.
Il primo codice che vi posto è relativo a quello che non funziona l'apostrofo, l'altro invece è quello che non parte il Msgbox. Qualcuno mi sa dire come correggere l'errore?
Grazie mille
Private Sub btnOk_Click()
Dim s As String, sql As String, ctl As Control
s = Nz(txtRichiedente, "")
For Each ctl In Me.Controls
If TypeName(ctl) = "ToggleButton" Then
If ctl = True Then
s = ctl.Caption
Exit For
End If
End If
Next
If s = "" Then
MsgBox "Occorre premere un pulsante oppure indicare un RICHIEDENTE.", vbExclamation, "Attenzione"
Exit Sub
End If
sql = "INSERT INTO registro (id_op, richiedente, numero_richiesto, date_stamp, time_stamp) VALUES " & _
"(" & ThisUser.id_user & ", '" & s & "', '" & txtNumTelefonoRichiesto & "', '" & FormatDateTime(Now, vbShortDate) & "', '" & _
FormatDateTime(Now, vbShortTime) & "')"
CurrentDb.Execute sql, dbFailOnError
DoCmd.Close acForm, Me.name
End Sub
Private Sub btnOk_Click()
Dim s As String, sql As String, ctl As Control
s = Nz(Chr(34) & txtRichiedente & Chr(34), "")
For Each ctl In Me.Controls
If TypeName(ctl) = "ToggleButton" Then
If ctl = True Then
s = "'" & ctl.Caption & "'"
Exit For
End If
End If
Next
If s = "" Then
MsgBox "Occorre premere un PULSANTE oppure indicare un RICHIEDENTE.", vbExclamation, "Attenzione"
Exit Sub
End If
sql = "INSERT INTO registro (id_op, richiedente, numero_richiesto, date_stamp, time_stamp) VALUES " & _
"(" & ThisUser.id_user & ", " & s & ", '" & txtNumTelefonoRichiesto & "', '" & FormatDateTime(Now, vbShortDate) & "', '" & _
FormatDateTime(Now, vbShortTime) & "')"
CurrentDb.Execute sql, dbFailOnError
DoCmd.Close acForm, Me.name
End Sub