Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117

    VB6 Ricerca avanzata Access

    Ciao! Ho un piccolo problema...


    Io di solito per fare le ricerche nel database acces uso una select tipo:

    codice:
    SELECT * FROM MiaTabella WHERE id=" & miaVariabile &  " AND indirizzo='" & miaVariabile2 & "'"
    ecc ecc ecc

    Il mio problema è che io ho creato 6 frames (attivabile via checkbox) che hanno vari critteri di ricerca:

    ES:

    1. Cerca per nome
    2. Cerca per età
    3. Cerca per altezza
    4. Cerca per sesso
    5. Cerca per cognome
    6. Cerca per provincia

    Ora...il punto è che essendo attivabili dall'utente io vorrei costruirmi la stringa di ricerca in base a quelli da loro attivati!
    Ho provato cone le condizioni IF.....solo che ci son 44 combinazioni diverse....
    C'è un modo per costruire la stringa in modo che funzioni sempre?
    Farmi 6 condizioni per tener d'occhio l'attivazione dei 6 moduli nn è un probl....ma 44 condizioni....

    Se non son stata chiara ditemelo! Ma non mollatemi !

    CIAO!

  2. #2
    Utente di HTML.it L'avatar di Jupy64
    Registrato dal
    Sep 2004
    Messaggi
    1,151
    Un modo veloce e semplice che mi viene in mente è quello di valorizzare delle variabili nell'evento click dei checkbox.
    Ad esempio:
    codice:
    Dim cercaNome as string
    dim cercaEta as string
    dim cercaAltezza as string
    dim cercaSesso as string
    dim cercaCognome as string
    dim cercaProvincia as string
    dim strRicerca as string
    dim strSql as string
    
    Private Sub CheckNome_Click()
        if CheckNome.Value=1 then
            cercaNome=" AND NOME = '" & replace(txtNome.text,"'","''")
        else
            cercaNome=""
        endif
    End Sub
    
    Private Sub CheckCognome_Click()
        if CheckCognome.Value=1 then
            cercaCognome=" AND COGNOME = '" & replace(txtCognome.text,"'","''")
        else
            cercaCognome=""
        endif
    End Sub
    .....
    ....
    strRicerca=cercaNome & cercaEta & cercaAltezza & cercaSesso & cercaCognome & cercaProvincia
    
    'togli l'AND iniziale
    strRicerca=Mid$(strRicerca,6)
    
    strSql="SELECT * FROM MiaTabella WHERE " & strRicerca
    Penso che potrebbe andare...
    Jupy

  3. #3
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    grazie ora non ho possibilità di testarlo! Appena posso ti dico!
    Cmq grazie mille! Sei gentilissimo!

  4. #4
    Utente di HTML.it L'avatar di Jupy64
    Registrato dal
    Sep 2004
    Messaggi
    1,151
    ho visto che al codice che ho buttato giù manca una parte di concatenamento della stringa di ricerca..
    cercaNome=" AND NOME = '" & replace(txtNome.text,"'","''") & "'"
    la parte in rosso è quella che avevo tralasciato..anche per tutte le altre..
    Jupy

  5. #5
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Grazie Jupy! Funziona tutto!!!

    Solo una cosa (non perchè non funzioni ma per imparare io qualcosa di nuovo)

    Ho capito che l'AND iniziale lo togli dalla stringa con:

    codice:
    strRicerca=Mid$(strRicerca,6)
    Ma non ho capito bene che hai fatto...

    Mid$...che è?

    ,6....che è?



    Ciao e grazie mi hai tolto da un grosso impiccio!

  6. #6
    Il mitico tasto F1, che richiama la guida in linea MSDN, ritorna questo risultato relativamente alla funzione Mid:
    Restituisce un valore Variant (String) che contiene un numero specificato di caratteri di una stringa.

    Sintassi

    Mid(string, start[, length])

    La sintassi della funzione Mid è composta dai seguenti argomenti predefiniti:

    Parte Descrizione
    string Obbligatoria.Espressione stringa dalla quale vengono restituiti i caratteri. Se string contieneNull, verrà restituito Null.
    start Obbligatoria.Long. Posizione di un carattere in string dalla quale inizia la parte che deve essere prelevata. Se start è superiore al numero di caratteri in string, Mid restituisce una stringa di lunghezza zero ("").
    length Facoltativa. Variant (Long). Numero di caratteri da restituire. Se omesso, o se nel testo vi sono meno caratteri che in length (compreso il carattere di start), vengono restituiti tutti i caratteri dalla posizione start alla fine della stringa.
    Ciauz

    Chico

  7. #7
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    grazie chico....peccato che non c'ho capito nulla! :master:

  8. #8
    Per semplificare, Mid estrae un numero determinato di caratteri in una stringa a partire da una determinata posizione.
    Esempio:
    Stringa="CHUDNOVSKY"
    Mid(Stringa,2,3) restituirà HUD, ovvero "legge" la stringa dalla posizione specificata nel primo parametro (2), quindi dalla lettera "H" per un numero di caratteri corrispondenti al secondo parametro (3).

    Il secondo parametro è opzionale, nel senso che se non viene inserito verrà letta la stringa dalla posizione del primo parametro sino alla fine.
    Ad esempio, Mid(Stringa,2) restituirà HUDNOVSKY , in pratica come se avessi scritto Mid(Stringa,2,9).

    Spero sia più chiaro

    Ciauz

    Chico

  9. #9
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    ah ho capito!
    Grazie mille!

  10. #10
    Utente di HTML.it L'avatar di Jupy64
    Registrato dal
    Sep 2004
    Messaggi
    1,151
    Ciao, metodo semplice ma funzionale...
    Come ti ha detto Chico, la funzione Mid ti permette di estrarre una parte della stringa che gli passi. Nel caso in esempio, strRicerca=Mid$(strRicerca,6), viene estratta la stringa a partire dal sesto carattere, quandi si saltano i primi 5 (cioè l'AND più lo spazio prima e dopo).
    Jupy

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.