Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Petra
    Registrato dal
    Apr 2005
    Messaggi
    224

    [VB6] Query di selezione tramite TextBox

    Devo fare una ricerca dati in un database Access tramite le textbox di Visual Basic 6.

    La tabella in cui dovrò effettuare la ricerca è composta da 3 campi:

    - IdCliente (Intero Lungo)
    - Cognome (Testo)
    - Nome (Testo)

    Le mie textbox nel form di Visual Basic 6 sono:

    - txtIdCliente
    - txtCognomeCliente
    - txtNomeCliente

    Adesso scrivo la mia subroutine che mi consente di visualizzare tutti i dati sul datagrid:

    codice:
    Private Sub Visualizza()
    If Conn.rs.State = 1 Then
        Conn.rs.Close
        Set Conn.rs = Nothing
    End If
    Conn.rs.Open "SELECT * FROM Clienti Order By Cognome Asc, Nome Asc", Conn.cn, 3, 3
    Set Me.DataGrid.DataSource = Conn.rs
    End Sub
    In pratica vorrei che la query si comportasse in questo modo:

    - Se il campo txtIdCliente è diverso da Empty mi aggiungi alla query IdCliente LIKE '" & Me.txtIdCliente.Text & "%'
    - Se il campo txtCognomeCliente è diverso da Empty mi aggiungi alla query Cognome LIKE '" & Me.txtCognomeCliente.Text & "%'
    - Se il campo txtNomeCliente è diverso da Empty mi aggiungi alla query Nome LIKE '" & Me.txtNomeCliente.Text & "%'

    Il problema è come posso impostare le giuste condizioni per inserire sia il WHERE che l'AND

    Vi giuro che è da 3 giorni che ci provo, ma non riesco più a ragionare...è assurdo!!

  2. #2
    Dalla tua query non si capisce che c'entrino le textbox. La ricerca la puoi fare per un campo alla volta. Allora al posto delle tre textbox ti converebbe inserire una combo con i campi che ti interessano e di li inserirli in una textbox con l'eveto click della combo, e poi fare la query. Poi la query mi pare del tutto sbagliata: order by si usa solo per ordinare in ordine alfabetico un campo e non due campi come fai tu. Infine perchè come controlo di collegamento ai dati non usi un ADO?
    Giorgio
    L'esperienza è il tipo di insegnante più difficile. Prima ti fa l'esame, e poi ti spiega la lezione. (Oscar Wilde)

  3. #3
    Molto facile...crea una funzione del genere

    Private function crea_sql as string
    i= 0
    If txtIdCliente <> "" Then
    i = 1
    temp = temp + " WHERE IdCliente='" & txtIdCliente & "'
    End If
    If txtCognomeCliente <> "" Then
    If i = 0 Then
    i = 1
    temp = temp + " WHERE Cognome ='" & txtCognomeCliente & "'"
    Else
    temp = temp + " AND Cognome ='" & txtCognomeCliente & "'"
    End If
    End If
    If txtNomeCliente <> "" Then
    If i = 0 Then
    i = 1
    temp = temp + " WHERE Nome= '" & txtNomeCliente & "'"
    Else
    temp = temp + " AND Nome= '" & txtNomeCliente & "'"
    End If
    End If

    crea_sql = temp

    end function



    Prova questa...

  4. #4
    naturalemte fai si che la stringa sql che metti nella connessione sia il risultato della funzione...

  5. #5
    Utente di HTML.it L'avatar di Petra
    Registrato dal
    Apr 2005
    Messaggi
    224
    Ora la provo...per ora ti ringrazio!!

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.