Casella combinata non rispetta l'apostrofo

di il
4 risposte

Casella combinata non rispetta l'apostrofo

Ho una maschera "SelezionaTitolo" che poggia sulla query "TTitolo" (che mi ordina tutti i record in base al campo "Titolo" (testo).
In questa maschera sono riuscito a creare una casella combinata sul campo "Titolo" in modo tale da selezionare il Ttolo direttamente e ottenere automaticamente tutti gli altri dati negli altri campi. Per farlo ho proceduto così:
1) Apri la maschera "SelezionaTitolo" in Visualizzazione struttura
2) Clic sull'icona Casella degli strumenti e selezionato anche Creazione guidata, ho scelto Casella combinata e l'ho disegnata nella zona desiderata
3) All'apertura della finestra Creazione guidata di casella combinata, ho scelto "Trova un record nella maschera basato sul valore selezionato nella casella combinata", Avanti
4) Continua tutte le finestre successive fino alla fine
Con questa procedura ho ottenuto il risultato che volevo, però accade che se seleziono un Titolo avente all'interno del suo testo l'apostrofo (es. Sull'acqua), mi appare un messaggio di errore:
Errore di run-time '3077'. Errore di sintassi (operatore mancante) nell'espressione.
Se clicco sul pulsante Debug si apre la seguente finestra di Visual Basic:

Private Sub CasellaCombinata0_AfterUpdate()
' Trova il record corrispondente al controllo
Dim rs As Object

Set rs = Me.Recordset.Clone
rs.FindFirst "[Titolo] = '" & Me![CasellaCombinata0] & "'"
If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub

con l'evidenziazione gialla sul rigo
rs.FindFirst "[Titolo] = '" & Me![CasellaCombinata0] & "'"

Non so se può essere utile, ma in Visualizzazione Struttura maschera SelezionaTitolo, al campo con la casella combinata (Non associato), alla proprietà Origine riga appare scritto:
SELECT TTitolo.Titolo FROM TTitolo;

Non so usare il Visual Basic, ma cosa occorre fare per far accettare l'input di un valore contenente l'apostrofo?

4 Risposte

  • Re: Casella combinata non rispetta l'apostrofo

    Commetti un'errore che in realtà è una necessità Sintattica...
    Devi applicare una variante alla composizione del Criterio.
    
    rs.FindFirst "[Titolo] = '" & REPLACE(Me![CasellaCombinata0],"'","''") & "'"
  • Re: Casella combinata non rispetta l'apostrofo

    Ho provato la sintassi che mi hai suggerito. L'errore non compare più, ma non c'è la corrispondenza logica del record. Praticamente mi permette di selezionare il Titolo con l'apostrofo, ma i restanti campi indicano sempre valori relativi al primo record.
  • Re: Casella combinata non rispetta l'apostrofo

    Questo non ha nulla a che vedere con l'anomalia dell'apostrofo...!
    Se la ricerca funziona, l'anomalia è da un'altra parte.... credo.
  • Re: Casella combinata non rispetta l'apostrofo

    Ho scoperto che il problema si risolve usando la seguente sintassi:

    rs.FindFirst "[Titolo] = """ & Me![CasellaCombinata0] & """"

    In pratica, tutte le volte che compare l'apostrofo nella riga dell'errore, sostituire con due doppi apici ("").
    Adesso funziona come mi aspetto, ma mi appare strano come la procedura guidata di creazione casella combinata non preveda automaticamente tale sintassi corretta.
Devi accedere o registrarti per scrivere nel forum
4 risposte