Ricerca elementi sparsi in un' unica stringa

di il
8 risposte

Ricerca elementi sparsi in un' unica stringa

Buongiorno a tutti. Premetto subito che non sono un programmatore e che sto "costruendo" la mia conoscenza su VBA partendo dal Northwind che modifico per le mie esigenze.
Inutile dire i vari problemi che incontro e le conseguenti tuttavia, finora, attraverso ricerche in rete ... sopratutto in questo forum che ringrazio vivamente ....sono riuscito a trovare le varie soluzioni. Ora però ho un problema che non riesco proprio a superare.
Mi spiego: il database che sto costruendo ha un campo testo dove va inserita una annotazione "chiave" sul tale record, tipo "Libro acquistato a Roma con Francesca". Ciò di cui ho bisogno è una query dinamica che mi permetta di cercare i record utilizzando elementi "sparsi" nel testo contenuto in tale campo e che al contempo prescinda dall'ordine con cui sono inserite (es. "Libro Roma Francesca" oppure "Francesca acquistato libro"). E' possibile?
Ringrazio fin d'ora per l'aiuto

8 Risposte

  • Re: Ricerca elementi sparsi in un' unica stringa

    Ad esempio con SQL Server potresti usare la ricerca FullText
  • Re: Ricerca elementi sparsi in un' unica stringa

    Ciao Oregon, grazie per la risposta. Avevo trovato che con SQL Server era possibile ma vorrei trovare la soluzione specificamente per un progetto di database fatto con Access VBA. Avevo trovato anche la soluzione per un form HTML ma non si adatta a VBA.
  • Re: Ricerca elementi sparsi in un' unica stringa

    Non mi risulta che MsAccess offra questa caratteristica.
    Al massimo ti puoi arrangiare con l'uso del LIKE con i caratteri jolly.
    Nel tuo caso la condizione per trovare il campo che contiene la stringa :

    "Libro acquistato a Roma con Francesca"

    potrebbe essere questa:
    LIKE '*Libro*Roma*Francesca*'
  • Re: Ricerca elementi sparsi in un' unica stringa

    Grazie Libra ... già uso la funzione Like nelle query per ricerche nei singoli campi tipo il cognome etc ...
    Girando per siti vari ho trovato questo codice ma non saprei proprio come adattarlo a VBA non essendo un programmatore.
    Lo posto anche per eventuale uso di altri utenti:
    " <%

    key = request.form("articolo")
    sost = "%' and corpo like '%"

    key2 = Replace(key, " ", sost)

    sql = "SELECT * FROM art WHERE corpo LIKE '%"&key2&"%'"

    ...
    %>
    così facendo la frase "patti territoriali di Bari", viene spezzata e ogni spazio (blank) viene sostituito, tramite la funzione "Replace", dalla frase "%' and corpo like '%", così che la query diventi

    SELECT * FROM art WHERE corpo LIKE '%patti%' AND corpo LIKE '%territoriali%' AND corpo LIKE '%Bari% "
  • Re: Ricerca elementi sparsi in un' unica stringa

    Gibra (non Libra)

    No, sei fuori strada.
    Il % in MSAccess non funziona, e la composizione della query è sbagliata.
  • Re: Ricerca elementi sparsi in un' unica stringa

    Per una esigenza del genere devi usare lo strumento adatto. Non lo fai con Access.
  • Re: Ricerca elementi sparsi in un' unica stringa

    Infatti .....
  • Re: Ricerca elementi sparsi in un' unica stringa

    luc_fiz ha scritto:


    Infatti .....
    2 Osservazioni.

    Il Carattere JOLLY è [%] se si usa il Driver ADO.
    Secondo, ricordo la possibilità di usare FUnzioni e RegEX anche con Access.
    In questo caso specifico si potrebbe creare una Function che passando Testo e Pattern restituisca True/False.

    Testo="....."
    Pattern="\b(Valore1|Valore2|Valore3|Valore4)\b"

    matches.Count>0 è il risultato della Function che viene assegnato ad un Campo Calcolato in una Query, dove matches è l'oggetto(Collection) restituito dal metodo Execute di RegEX.
Devi accedere o registrarti per scrivere nel forum
8 risposte