Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    55

    Query per ricerca

    Ciao a tutti, ho bisogno di alcuni consigli su come impostare una query SQL.
    Questo è un piccolo esempio:



    Ora, lo scopo del gioco è che quando premo Query mi esegua la query naturalmente ma senza che tutti i campi siano necessariamente compilati. Cerco di spiegarmi meglio :

    adesso io potrei fare
    SELECT * FROM Tabella WHERE Nome= txtNome.text And Cognome= ecc... ecc..

    e per questo nessun problema, la mia domanda è poniamo il caso che io voglia eseguire la query con una text vuota o due text vuote oppure che solo una text sia compilata; e che quindi la query faccia riferimento solo alle text contenenti qualcosa ed escluda le altre.

    Io potrei voler far ua ricerca solo per cogome, oppure per cognome e indirizzo oppure per cognome indirizzo e professione. In che modo potrei creare la query??? :master:

    Ovviamente non consigliatemi ti creare un pulsante per ogni query che voglio perchè questo è solo un esempio con pochi campi, ma una volta capito il funzionamento, potrebbe essere applicato a form con decine di campi.

    Vi ringrazio tantissimo per l'aiuto
    ...Don't let the bastards grind you down

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    118
    potresti per esempio:

    Select * from tabella Where 1=1

    if nome >>>> then

    AND nome = 'pippo'

    if cognome>>>> then

    AND cognome ='pluto'

    etc...
    D.T.K.L.A.M.F.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    55
    Originariamente inviato da adamino
    potresti per esempio:

    Select * from tabella Where 1=1

    if nome >>>> then

    AND nome = 'pippo'

    if cognome>>>> then

    AND cognome ='pluto'

    etc...
    Grazie mille per la risposta. Purtroppo non riesco a capire come intendi, riusciresti a scriverlo sotto forma di codice?

    Cosa significa where 1=1 ? e le espressioni if nome >>>> then ? Vanno inserite di seguito alla query oppure gli if sono esterni?

    io ho scritto così

    "SELECT * FROM Tabella WHERE 1=1 poi ? devo chiudere la stringa ? oppure è possibile utilizzare l'if dentro ala stringa SQL? Scusami ma proprio non ho capito
    ...Don't let the bastards grind you down

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    118
    ok....si scusa..probabilmente era in pò troppo telegrafico...
    è un modo per costruirti una stringa SQL dinamicamente.
    Supponi ad esempio di avere due textbox
    txtNome e txtCognome
    (riporta il codice nell'editor visualstudio per capire meglio spazi-apici-doppiapici........)
    allora:
    dim strSql as string =""

    strSql ="SELECT * FROM tabella WHERE 1=1"

    if txtNome.text <>"" then
    strSql &= " AND nome ='" & txtNome.text.replace("'","''") & "'"
    end if
    if txtCognome.text <>"" then
    strSql &= " AND cognome ='" & txtCognome.text.replace("'","''") & "'"
    end if

    (Utilizzo la replace (del singolo apice con il doppio apice) per evitare che l'eventuale inserimento dell'apice nel nome o nel cognome possa dare errore,
    WHERE 1=1 è una condizione sempre vera e la utilizzo per semplificare la scrittura della query dinamica....altrimenti dovrei etc...etc...)
    )

    Spero sia un pò più chiaro.
    Non fare complimenti e chiedi se non hai capito o se non ho capito io il tuo problema.
    ciao
    D.T.K.L.A.M.F.

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466

    Moderazione

    In futuro, specifica anche il linguaggio e usa titoli più descrittivi.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    55

    Re: Moderazione

    Originariamente inviato da alka
    In futuro, specifica anche il linguaggio e usa titoli più descrittivi.
    Giusto, dimenticanza.
    ...Don't let the bastards grind you down

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    55
    Originariamente inviato da adamino
    ok....si scusa..probabilmente era in pò troppo telegrafico...
    è un modo per costruirti una stringa SQL dinamicamente.
    Supponi ad esempio di avere due textbox
    txtNome e txtCognome
    (riporta il codice nell'editor visualstudio per capire meglio spazi-apici-doppiapici........)
    allora:
    dim strSql as string =""

    strSql ="SELECT * FROM tabella WHERE 1=1"

    if txtNome.text <>"" then
    strSql &= " AND nome ='" & txtNome.text.replace("'","''") & "'"
    end if
    if txtCognome.text <>"" then
    strSql &= " AND cognome ='" & txtCognome.text.replace("'","''") & "'"
    end if

    (Utilizzo la replace (del singolo apice con il doppio apice) per evitare che l'eventuale inserimento dell'apice nel nome o nel cognome possa dare errore,
    WHERE 1=1 è una condizione sempre vera e la utilizzo per semplificare la scrittura della query dinamica....altrimenti dovrei etc...etc...)
    )

    Spero sia un pò più chiaro.
    Non fare complimenti e chiedi se non hai capito o se non ho capito io il tuo problema.
    ciao

    Ti ringrazio molto per l'aiuto, ho provato come mi hai detto ma ricevo un errore di tipo "Qualificatore non valido" riferito a txtCognome.text.replace :master:
    ...Don't let the bastards grind you down

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Naturalmente ... quello e' codice per VB.NET, non per VB6 ...

    Con VB6 devi usare la funzione Replace ...

    Replace(txtCognome.text, "'", "''")

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    55
    Originariamente inviato da oregon
    Naturalmente ... quello e' codice per VB.NET, non per VB6 ...

    Con VB6 devi usare la funzione Replace ...

    Replace(txtCognome.text, "'", "''")
    Hai ragione!!!! Infatti non conoscevo la forma oggetto.replace. Scusa ma non conoscendo VB.NET pensavo fosse un'altro modo di usare replace. Mi sei stato proprio di grandissimo aiuto.
    Ovviamente mi riservo il diritto di disturbarti qualora ne avessi bisogno
    ...Don't let the bastards grind you down

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.