Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [VB6]query select con Access

    Volevo chiedervi qual'è la corretta sintassi di una query select che prevede una clausola WHERE con due possibilità:

    "SELECT ....FROM...
    WHERE campo1=valore AND campo2=valore
    OR campo1=valore"

    In pratica questi campi sono riempiti dall'utente che fa una selezione in due combo diverse: voglio lasciargli la possibilità di effettuare una sola selezione nella prima combo: ovviamente tirerà su una maggior quantità di risultati.
    Se poi è in grado di "affinare la ricerca" farà la scelta anche nella seconda combo ottenendo un numero minore di risultati.
    Usando "OR" non risolvo perché comunque viene privilegiata la seconda scelta (cioè quella in cui viene selezionato il valore solo dalla prima combo) Tutto chiaro?? Grazie

  2. #2
    Utente di HTML.it L'avatar di Jupy64
    Registrato dal
    Sep 2004
    Messaggi
    1,151
    Ciao, se non ho capito male la tua domanda.. devi usare due query distinte.
    usa una variabile,
    - quanto selezioni entrambe le combo: strSQL="campo1=valore AND campo2=valore"
    - quando selezioni solo una combo: strSQL="campo1=valore"
    poi:
    codice:
    "SELECT ....FROM... 
    WHERE " & strSQL
    Jupy

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    357
    Questa stringa presuppone che Valore1 sia sempre scelto dalla combo:

    str = "select * from tabella where campo1 = '" & Valore1 & "'"
    if not isnull(Valore2) and Valore2 <> "" then
    str = str & " and campo2 = '" & Valore2 & "'"
    end if

    Questa stringa va bene se campo1 e/o campo2 sulla tua tabella sono alfanumerici, se sono numerici:

    str = "select * from tabella where campo1 = " & Valore1 & ""
    if not isnull(Valore2) and Valore2 <> "" then
    str = str & " and campo2 = " & Valore2 & ""
    end if

    Ciao

  4. #4
    Tutto chiaro??
    Più o meno...
    Devi fare due Query per i due casi, cioè se l'utente inserisce un solo criterio di ricerca o se ne inserisce 2. Verrà una cosa del genere:
    codice:
    "SELECT ....FROM... WHERE campo1=valore AND campo2=valore 
    e la seconda
    "SELECT ....FROM... WHERE campo1=valore"
    Se non ho capito...posta nuovamente.

  5. #5
    L'approccio di Jupy64 mi sembra interessante (devo pensarci su), quello di mgmg mi ci vorrà un po' per capirlo, quello di Mardok è quello che pensavo anch'io all'inizio. Infatti avevo provato a fare due query con l'iterazione if...else, ma evidentemente non ne sono stata capace perché alla fine ho preferito cambiare completamente il form, la ricerca, le combo,...insomma tutto pur di evitare questo problema.
    Adesso sono di fretta, ma più tardi studierò comunque le varie proposte. Grazie!

  6. #6
    Metti caso che hai due textbox(discorso analogo vale per due combobox ecc...) devi fare un semplice if:
    codice:
    if textbox1.text <> "" and textbox2.text <> "" then
       "SELECT ....FROM... WHERE campo1=valore AND campo2=valore 
    elseif textbox1.text <> "" and textbox2.text = "" then
       "SELECT ....FROM... WHERE campo1=valore" 
    end if
    ...Tutto qua

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    357
    Il mio esempio forse è meno immediato degli altri, considera comunque che in un'istruzione select (sul recordset) le variabili vanno racchiuse tra '" & ivaloristringa & "' e tra " & inumeri & ".
    Altrimenti danno errore, ciao.
    Quello che ho scritto non è nient'altro che un campo stringa da passare alla tua open recordset.

    Ciao

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.