Devi sempre raddoppiare gli apici, per evitare che il linguaggio SQL vada in confusione.
invece di scrivere
rsCognomeA.Filter = "[Cognome Acquirente]='" & txtCognomeAcquirente.Text & "'"
devi scrivere
codice:
dim sCondizione As String
sCondizione = Replace(txtCognomeAcquirente.Text, "'", "''")
rsCognomeA.Filter = "[Cognome Acquirente]='" & sCondizione & "'"
Ancora meglio, puoi usare una funzione che fa tutto il lavoro per te, e magari esegua anche i dovuti controlli (che adesso non fai!), e poi ti restituisca la stringa già formattata:
codice:
Public Function Apici2( Byval psStringa As String) As String
Dim s As String
s = Trim$(psStringa)
If s = "" Then
''''MsgBox "Errore. Stringa vuota!",vbCritical
Exit Function
End If
s = Replace(s, "'", "''")
s = Chr$(39) & s & Chr$(39)
Apici2 = s
End Function
per poi richiamarla così:
codice:
rsCognomeA.Filter = "[Cognome Acquirente]=" & Apici2(txtCognomeAcquirente.Text)
Anzi, a dire il vero sarebbe da usare così:
codice:
Dim sCondizione As String
sCondizione = Apici2(txtCognomeAcquirente.Text)
If sCondizione = "" Then
MsgBox "Errore. Stringa vuota!", vbCritical
Else
rsCognomeA.Filter = "[Cognome Acquirente]=" & sCondizione
End If
In questo modo, se la stringa è vuota intercetti l'errore PRIMA di usare il metodo Filter