Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it L'avatar di pinOut
    Registrato dal
    Apr 2003
    Messaggi
    683

    [Access] query con parametri

    Sento che mi sto perdendo in un bicchier d'acqua, ma il problema è questo:

    Ho una query alla quale passo dei parametri tramite una maschera.
    Il problema è che se lascio vuoto un campo della maschera, la query non restituisce alcun valore, quindi devo fare in modo di dirgli che se un parametro non è impostato deve restituire tutti i dati di quel campo.

    Ho provato apici, asterischi, virgolette, tipi di join...

    ...help
    "Il modo migliore per sciupare un carattere è correggerlo." - Wilde

  2. #2
    Se il campo è di tipo testo, il criterio dev'essere

    Like "*" & [NomeCampo] & "*"

  3. #3
    Utente di HTML.it L'avatar di pinOut
    Registrato dal
    Apr 2003
    Messaggi
    683
    Si, è tipo testo. Domani provo e faccio sapere.

    Grazie.
    "Il modo migliore per sciupare un carattere è correggerlo." - Wilde

  4. #4
    Utente di HTML.it L'avatar di pinOut
    Registrato dal
    Apr 2003
    Messaggi
    683
    Dunque...la situazione è decisamente migliorata, ora la query restituisce i risultati ma con un problema:

    se nella maschera inserisco: 4, la query ritorna tutti i record che comprendono il 4 in quel campo, cioè anche 14, 24 eccetera, io dovrei limitarla solo al 4.

    Nella griglia della query ho questa espressione:

    Like "*" & [Forms]![maschera:selezione]![campo_maschera] & "*"

    Grazie in anticipo a tutte le anime pie del forum...
    "Il modo migliore per sciupare un carattere è correggerlo." - Wilde

  5. #5
    Utente bannato
    Registrato dal
    Sep 2001
    Messaggi
    534
    non dovresti usare WHERE invece che like!??!

    magari l'ho sparata grossa...

  6. #6
    Ovviamente non è possibile, con una semplice query con parametri e senza usare codice.

    Infatti:

    - Like "*" & [Forms]![maschera:selezione]![campo_maschera] & "*"
    ti mostra tutti i record che contengono ALMENO la stringa inserita: quindi, inserendo "4", ottieni i record con "4", "435", "Luc4". Infatti il filtro finale sarebbe LIKE "*4*".
    Se non inserisci nulla (e quindi non vuoi filtrare su quel campo) ottieni LIKE "**", che in effetti vuol dire "nessun filtro"

    - Se invece vuoi cercare la stringa esatta inserita nel campo devi per forza usare questo filtro:
    [Forms]![maschera:selezione]![campo_maschera]
    che però non funziona nel caso tu non inserisca nulla, anzi, ti verranno mostrati solo i record che effettivamente hanno quel campo VUOTO.

    L'unica soluzione è fare un pulsante che aggiunge o toglie le condizioni nella WHERE della SQL, a seconda che ciascun campo sia pieno o vuoto.

  7. #7
    [supersaibal]Originariamente inviato da zaratustra
    non dovresti usare WHERE invece che like!??!

    magari l'ho sparata grossa... [/supersaibal]
    Abbastanza...

    SELECT campi FROM tabelle WHERE campo LIKE espressione...

  8. #8
    Utente di HTML.it L'avatar di pinOut
    Registrato dal
    Apr 2003
    Messaggi
    683
    Tutto chiaro, proverò a mettere in pratica il suggerimento del pulsante.

    Grazie e ciao.

    lo dico a bassa voce, una dritta su come scrivere il codice del pulsante...beh, mi farebbe mooolto comodo
    "Il modo migliore per sciupare un carattere è correggerlo." - Wilde

  9. #9
    Quanta esperienza hai di VBA?

  10. #10
    Utente di HTML.it L'avatar di pinOut
    Registrato dal
    Apr 2003
    Messaggi
    683
    Direi...nulla, a parte due stupidate qua e la.

    Sto creando un mini-database da usare qui un ufficio. Deve fare poche cose e niente di particolarmente complesso.

    La situazione è disperata, vero?
    "Il modo migliore per sciupare un carattere è correggerlo." - Wilde

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.