Visualizzazione dei risultati da 1 a 3 su 3

Discussione: [VB6] Errore Filter

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    27

    Errore Filter

    Buongiorno avrei il seguente quesito, programmando in vb6 io devo eseguire un filter, il codice che utilizzo è il seguente:

    rsCognomeA.Filter = "[Cognome Acquirente]='" & txtCognomeAcquirente.Text & "'"

    il problema è il seguente, quando faccio un filter utilizzando una stringa(contenuta in una variabile o nel textbox indicato), che contiene il carattere " ' " cioè un apostrofo, mi viene generato un errore sulla stringa sql di query perchè non riconosce il simbolo come entità della stringa ma come separatore della stringa sql, volevo chiedervi come potevo risolvere questo problema, grazie mille.Per esempio quando il textbox ha valore:

    txtCognomeAcquirente.Text ="LAMA"

    non mi genera nessun errore mentre quando il valore del textbox ha valore:

    txtCognomeAcquirente.Text ="L'AMA"

    cioè la stringa contiene il carattere ' mi genera errore potete aiutarmi Grazie

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    VB --> Forum "Visual Basic e .NET Framework".

    Sposto.

    PS: Linguaggio e versione vanno obbligatoriamente indicati nel titolo.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    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



Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.