Apostrofo non riconosciuto

di il
6 risposte

Apostrofo non riconosciuto

Ciao a tutti,
col codice sottostante apro una maschera, ma se nel titolo c' è un apostrofo non mi apre la maschera e mi dà errore:
Errore di sintassi (operatore mancante) nell' espressione della query '[TITOLO]='L' ULTIMA ORA".
Qualcuno mi aiuta a risolvere il problemino? Grazie in anticipo.
Private Sub lstTITOLI_DblClick(Cancel As Integer)
 With CodeContextObject
    DoCmd.OpenForm "Fumetti", acNormal, "", "[TITOLO]=" & "'" & .titolo & "'", , acNormal
 End With
 End Sub

6 Risposte

  • Re: Apostrofo non riconosciuto

    Devi usare la funzione Replace per sostituire "al volo" l'apice con 2 apici.
  • Re: Apostrofo non riconosciuto

    Ciao Filippo70,
    se capisco bene stai tentando di aprire una maschera da una maschera aperta, impostando la condizione where su quest'ultima.
    Hai convertito in Vba una macro?
    Non serve "" dopo Acnormal per non impostare il filtro, e Acnormal è l'impostazione di default per l'apertura della maschera, puoi impostare una , te lo dice l'intellisense.
    oltre all'utillizzo della funzione replace che è la soluzione migliore a mio avviso, prova raddoppiare le virgolette, in presenza di apostrofo Access si trova spiazzato e sbilanciato.
    Se il nome del campo su cui clausula where è impostata è contenuto in un controllo della form, dovrebbe bastare questo :
    DoCmd.OpenForm "Fumetti", , , "[TITOLO]=""" & ME![TUOCONTROLLO] & """""
    (dopo titolo ci sono 3 virgolette e alla fine 4)
    adattando i nomi al tuo scenario.
    un saluto.
  • Re: Apostrofo non riconosciuto

    Spero di non essere ridondante. Questo argomento era stato già trattato in questo thread
    http://www.iprogrammatori.it/forum-programmazione/access/casella-combinata-non-rispetta-apostrofo-t13263.html?hilit=apostrofo#p8479326
  • Re: Apostrofo non riconosciuto

    Prima cosa, visto che sei all'interno dell'Oggetto chiamante, la Form, evita il ricorso al CodeContextObject direi che è un'inutile perdita di tempo e ricorso ad un riferimento Implicito.

    L'unico modo è questo:
    DoCmd.OpenForm "Fumetti", acNormal, "", "[Titolo] = '" & REPLACE(Me!Titolo.Value,"'","''") & "'", , acNormal
  • Re: Apostrofo non riconosciuto

    Creati una banale funzione che faccia il Replace e restituisca la stringa tra apici, esempio:
    Public Function Apici2(byval s As String) As String
        Apici2 = " '" & Replace(s, "'", "''") & "' "
    End Function
    
    Così potrai usarla senza dovre usare ogni volta la funzione Replace:

    DoCmd.OpenForm "Fumetti", acNormal, "", "[Titolo] = " &  Apici2(Me!Titolo.Value), , acNormal 
    Vantaggi: meno errori di scrittura, più leggibilità del codice.
  • Re: Apostrofo non riconosciuto

    Problemino risolto (in entrambi i modi)!!! Grazie!!!
    p.s. Osvaldo, avevo provato a fare una ricerca con la parola "apostrofo" ma non mi era uscito nulla.
    Ora ho provato con la parola "Apostrofo" e mi è uscita SOLO la tua precedente discussione. Non sapevo facesse distinzione tra maiuscole e minuscole. Cmq adesso le due discussioni sono collegate! Un grazie anche a te!
Devi accedere o registrarti per scrivere nel forum
6 risposte