Problemi legati all'APOSTROFO

di il
5 risposte

Problemi legati all'APOSTROFO

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

5 Risposte

  • Re: Problemi legati all'APOSTROFO

    Per l'apostrofo si usa questa
    
    Testo=REPLACE(Testo,"'","''")
    Mentre questa cosa che hai scritto io la eviterei essendo INNUTILE
    
    If TypeName(ctl) = "ToggleButton" Then
    Si scrive così
    
        If TypeOf ctl Is ToggleButton Then
    e come vedi non serve una Funzione che restituisca una Stringa...

    Per il resto direi che non ho capito nulla, nemmeno lo scopo...
  • Re: Problemi legati all'APOSTROFO

    Ciao @Alex, grazie per il tuo intervento. Ottimo funziona tutto...non saprei proprio come fare senza il vostro prezioso aiuto. Ho modificato il codice e posto quello nuovo qui di sotto
    
    Private Sub btnOk_Click()
    Dim s As String, sql As String, ctl As Control
    
    
        s = Nz(Replace(txtRichiedente, "'", "''"), "")
            
        For Each ctl In Me.Controls
            If TypeOf ctl Is 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
    Perdonami l'azzardo, ma sono spinto da una necessità che mi porta a chiedere un aiuto non da poco. So benissimo che non ci conosciamo, so benissimo che chiedere questi tipi di aiuti hanno un tornaconto economico, ma tempo fa su un forum di Excel ho conosciuto una persona davvero ammirevole che mi ha aiutato nella realizzazione di un database che gestisce una rubrica telefonica del mio ufficio, ma che, ahimè, non ho più sue notizie ormai da molto tempo. Sono arrivato praticamente alla fine, ma mi manca un ultimo tassello che purtroppo senza l'aiuto di una persona competente non potrò mai risolvere. Volevo sapere se posso trovare in te una persona che mi possa offrire il proprio aiuto, così come l'ho trovata tempo fa.
    Ti lascio la mia mail qualora fossi curioso della mia richiesta.
    Grazie anche solo di aver letto ciò che ho appena scritto.

  • Re: Problemi legati all'APOSTROFO

    Rispondo solo per me..., e per quanto mi riguarda non offro alcun supporto privato, rispondo nei forum se so di cosa si parla e se ho tempo, e credo sia così per molti lettori...

    Buon lavoro.
  • Re: Problemi legati all'APOSTROFO

    Si perdona il mio impeto, immaginavo una risposta simile. Ti ringrazio cmq per aver risolto il problema che ho avuto con l'apostrofo. Buona serata
  • Re: Problemi legati all'APOSTROFO

    Nessun problema, sei stato educato e l'educazione merita sempre una risposta.

    Un suggerimento che ti do, è di NON PUBBLICARE indirizzo mail in chiaro MAI.

    Saluti
Devi accedere o registrarti per scrivere nel forum
5 risposte