Query di selezione

di il
10 risposte

Query di selezione

Buonasera vorrei chiedere una mano per risolvere (se è questa la strada giusta ovviamente) un problema che ho su una query di selezione.

In pratica ho una ListBox e a fianco una pulsantiera A/Z.

Lo scopo è quello di filtrare i record di una tabella in base alla Caption del button premuto. Esempio se premo il buttonA allora mi verranno elencati tutti i record il cui campo X inizia per A.

Solitamente faccio così:
Private Function FilterByLetter () 
Dim s as String

s = ActiveControl.Caption

s = "SELECT * FROM [tblElenco] WHERE [Campo] LIKE '" & s & *' ;"

ListBox.RowSourse = s

End Function
Ora vorrei ottenere una cosa un po' diversa. Cioè siccome il campo CAMPO è popolato da dati più o meno così:

6601 - Straordinari,
6404 - Informatico,
6600 - Sanitario,
ecc....

mi servirebbe che la ricerca parta dall'ottavo carattere perché altrimenti così com'è scritta la routine non troverà mai nulla. Ovvero deve omettere dalla ricerca i numeri, gli spazi e il trattino. Quindi se premo il buttonS nella ListBox dovrà comparire 6600 - Sanitario.

Spero di essermi spiegato in modo corretto e che si possa trovare una soluzione. Avevo pensato alla funzione MID() ma (se è la strada giusta) non so dove e come va inserita nella query.
Grazia a chi mi aiuta.

10 Risposte

  • Re: Query di selezione

    Buongiorno, in merito alla mia richiesta, per caso c'è qualcuno che può darmi una mano? Grazie.
  • Re: Query di selezione

    A parte "SOLLECITARE", cosa che dopo 1gg direi non da fare... e se hai urgenza ci sono i consulenti a pagamento...!
    ".... WHERE Mid$([Campo],8,1)='" & S & "'"
  • Re: Query di selezione

    Direi che digitando 'S' e utilizzando Like appariranno:
    • 6600 - Sanitario
    • 6601 - Straordinari
  • Re: Query di selezione

    Ci mancherebbe, non mi permetterei mai di SOLLECITARE. Siccome ho notato che altri 3D aperti dopo di me sono stati risposti a differenza del mio ho pensato che fosse stato saltato e dimenticato. Pardon.

    Cmq ho provato la tua soluzione ma non funziona. Tra l'altro dopo che all'interno della query digito MID( non si apre il suggeritore di argomenti.
  • Re: Query di selezione

    Leggi qui per affrontare tutti i problemi di apici, stringhe ecc...
    http://www.baldyweb.com/BuildSQL.ht
    Fai varie prove ovviamente. E, se non ho capito male, puoi sostituire Chr$(39) con l'apice singolo (').
  • Re: Query di selezione

    alexps81 ha scritto:


    Ci mancherebbe, non mi permetterei mai di SOLLECITARE. Siccome ho notato che altri 3D aperti dopo di me sono stati risposti a differenza del mio ho pensato che fosse stato saltato e dimenticato. Pardon.

    Cmq ho provato la tua soluzione ma non funziona. Tra l'altro dopo che all'interno della query digito MID( non si apre il suggeritore di argomenti.
    Dipende da DOVE la scrivi, se la scrivi in QBE servono i PUNTOVIRGOLA come separatori e non le virgole.
    Poi fai qualche prova, magari stampa il PREDICATO SQL prima di eseguirlo e pubblicalo, e magari pubblica anche gli errori... nel caso.
  • Re: Query di selezione

    Temo che dovrò rinunciare. Le mie conoscenze non mi consentono di andare oltre e provare ciò che mi suggerisci. Non voglio farti perdere altro tempo. Ti ringrazio lo stesso....me ne farò una ragione.
  • Re: Query di selezione

    Semplifichiamo la cosa..., magari ho frainteso se DALL'OTTAVO o ALL'OTTAVO... ma cambia poco...
    Nel secondo caso la soluzione era quella già data, nel primo caso devi modificarla così:
    
    s = "SELECT * FROM [tblElenco] WHERE MID([Campo],8) LIKE '*" & s & "*' ;"
    Ciao
  • Re: Query di selezione

    Per info....non so come mai ora funziona. Mah...incredibile eppure giuro che ciò che mi hai suggerito di fare l'ho provato anche io ieri ma non funzionava, ho provato oggi così come mi hai suggerito e non funzionava, poi magicamente va. Non ho parole. Spero solo che durante le prove precedenti ho avuto qualche svista sugli apici. Non trovo altre spiegazioni. Grazie cmq. 3D risolto.
  • Re: Query di selezione

    La risposta potrebbe essere semplice se riguardi la tua stringa iniziale, e se hai fatto i test su quella
    
    s = "SELECT * FROM [tblElenco] WHERE [Campo] LIKE '" & s & *' ;"
    Questa sintassicontiene un ERRORE, ovvero viene chiusa la Stringa... ma non riaperta.
    Dopo il LIKE hai APICE e Virgolette di chisura, poi concateni il Valore [S] poi provi a concatenare un qualche cosa che non è una stringa, dovrebbe uscire l'errore di sintassi... in qunato mancano le Virgolette prima della wildcard [*]
Devi accedere o registrarti per scrivere nel forum
10 risposte