Ricerca nome apostrofato

di il
10 risposte

Ricerca nome apostrofato

Arry(0, 1) = "NOME LIKE '*" & Arry(0, 0) & "*'"
Costruisco una stringa di istruzione sql per una effettuare ricerca con parametri diversi e variabili
in questo caso processo il parziale di un nome
Ma se devo cercare un cognome con apostrofo (ad esempio D'ALO' oppure D'ANGELO oppure MUNI' mi butta fuori) per la sintassi.
Dunque potrei lavorare sul nome digitato e utilizzare solo la parte dx o sx prima o dopo l'epostrofo... comunque macchinoso e impreciso... ad esempio l'utente potrebbe digitare piu' di un solo apostrofo...
Qualche altra idea?

10 Risposte

  • Re: Ricerca nome apostrofato

    Salve,
    prova questo:
    "Titolo like" & Chr$(34) & "*" & Me!TxFiltro & "*" & Chr$(34)
  • Re: Ricerca nome apostrofato

    Duplica gli apostrofi nel testo da cercare.
    Sarebbe meglio usare i parametri
  • Re: Ricerca nome apostrofato

    Non mi butta fuori nella costruzione della stringa ma durante l'esecuzione della query
      : myCondCorpo : "NOME LIKE '*D'ALESSIO*'" : String
      : myCondTot :  : String
    Me.txtTotSelez = DCount("*", "qryAnagrafiche", myCondCorpo)
    anche utilizzando CHR con i caratteri ascii sia 34 che 39
    a questo punto mi resterebbe solo che lavorare la stringa sostituendo i caratteri ' e " con ?
    quindi verrebbe fuori una stringa cosi'
    "SELECT * FROM qryAnagrafiche WHERE NOME LIKE '*D?ALESSIO*' ORDER BY NOME;"
    per ora ho rimediato con REPLACE ma davvero non ci sono altre soluzioni secondo voi?
  • Re: Ricerca nome apostrofato

    Walter61 ha scritto:


    ...
    davvero non ci sono altre soluzioni secondo voi?
    L'ha detto

    sspintux ha scritto:


    Duplica gli apostrofi nel testo da cercare.
    La SQL dovrebbe essere così
    SELECT * FROM qryAnagrafiche WHERE NOME LIKE '*D''ALESSIO*' ORDER BY NOME
    Solitamente in queste situazioni si fa uso di Replace, in modo da far diventare doppio apostrofo quello che è singolo.
    Ipotizzando che tu costruisca il criterio via codice, potrebbe diventare una sorta di
    "SELECT * FROM qryAnagrafiche WHERE NOME LIKE '*" & Replace(strRicerca, "'", "''") & "*' ORDER BY NOME"
    Ah... solo ora vedo comparire il Replace, nel tuo intervento... praticamente c'eri arrivato, o quasi.
  • Re: Ricerca nome apostrofato

    Siccome va in crisi sia con singolo apice che doppio la risolvo cosi'
    Arry(0, 0) = Me.txtNomeParziale.Value
    Arry(0, 0) = Replace(Arry(0, 0), Chr(39), "?")
    Arry(0, 0) = Replace(Arry(0, 0), Chr(34), "?")
    Arry(0, 1) = "NOME LIKE '*" & Arry(0, 0) & "*'"
    Quindi mi confermate che non esistono altre soluzioni ?
  • Re: Ricerca nome apostrofato

    Probabilmente sbagli qualcosa perché il raddoppio degli apici deve funzionare.
    Mostra l'istruzione che generi da codice
  • Re: Ricerca nome apostrofato

    Mostra l'istruzione che generi da codice
      : myCondCorpo : "NOME LIKE '*D'ALESSIO*'" : String
    Me.txtTotSelez = DCount("*", "qryAnagrafiche", myCondCorpo)
    esce in errore si sintassi durante l'esecuzione del DCount
    cosa intendi con raddoppio degli apici?
  • Re: Ricerca nome apostrofato

    Walter61 ha scritto:


      : myCondCorpo : "NOME LIKE '*D'ALESSIO*'" : String
    E' già la seconda volta che vedo quella riga e non capisco come la usi. O si tratta solo di una sorta di riassunto?

    Walter61 ha scritto:


    Me.txtTotSelez = DCount("*", "qryAnagrafiche", myCondCorpo)
    cosa intendi con raddoppio degli apici?
    Spero di non causare danni con interventi incrociati/sovrapposti a quelli di sspintux. Lui l'ha scritto la prima volta, io l'ho reso esplicito nel mio primo intervento. Il raddoppio dell'apice è questo
    Da   -> "NOME LIKE '*D'ALESSIO*'"
    A    -> "NOME LIKE '*D''ALESSIO*'"
    Guarda quanti apostrofi ci sono dentro "D'Alessio": quella è la versione che piace a SQL. (in questo caso apice ed apostrofo sono sinonimi)
    Scrivi per intero così e dicci se da ancora problemi
    Me.txtTotSelez = DCount("*", "qryAnagrafiche", "NOME LIKE '*D''ALESSIO*'")
    Il Replace, ovviamente, non puoi applicarlo all'intera variabile myCondCorpo ma solo alla parte veramente variabile, quella da cercare, cioè "D'Alessio".
  • Re: Ricerca nome apostrofato

    Grazie ragazzi, come sempre, per le spiegazioni esaudienti.
    Emersa quindi questa caratteristica di SQL, come ho successivamente riscontrato su altri forum anche stranieri orientati a SQL, a questo punto pero', per soddisfare una curiosita' teorica, come si risolve con il raddoppio degli apici, o comunque in SQL la ricerca di un cognome con apostrofo E accento?
    Se volessi filtrare con LIKE una stringa come *D'ALO'* con apostrofo e accento finale?
  • Re: Ricerca nome apostrofato

    Walter61 ha scritto:


    Se volessi filtrare con LIKE una stringa come *D'ALO'* con apostrofo e accento finale?
    Sempre nello stesso modo, raddoppiando:
    LIKE '*D''ALO''*'
    con il Replace.
    In una casella di testo ad esempio inserisci quello che vuoi cercare, [D'ALO'] e nella costruzione della where condition (che sia della query che sia di un DCount) usi il Replace, sostituendo ogni occorrenza dell'apostrofo/accento con due apostrofi.
    sWhr = "NOMECAMPO LIKE '*" & Replace(tuaCaselladiTesto.Value, "'", "''") & "*'"
Devi accedere o registrarti per scrivere nel forum
10 risposte