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

    selezionare ID da combobox

    Salve ragazzi, rieccomi qua per chiedere il vostro aiuto.
    In una form, ho inserito due combobox e un pulsante "scannerizza"
    alla pressione di questo pulsante, il programma scannerizza l'immagine da una periferica, la salva sul pc, salva il percorso su un database e collega il file ad un cliente e ad una categoria
    Quello che voglio sapere io è : visto che ho popolato la combo clienti in questo modo

    codice:
     Private Sub popolacomboclienti()
            conn.Open()
            cmd.CommandText = "SELECT nome_cognome, id_clienti FROM clienti"
            cmd.Connection = conn
            Try
                Dim dr As MySqlDataReader = cmd.ExecuteReader
                While dr.Read()
                    ComboSettori.Items.Add(dr(0))
                End While
                dr.Close()
                ComboSettori.SelectedIndex = 0
            Catch ex As Exception
                MessageBox.Show(ex.Message & Environment.NewLine & ex.StackTrace)
            Finally
                conn.Close()
            End Try
        End Sub
    come posso passare ad una variabile stringa o integer il valore ID del cliente selezionato per collegarlo in un'altra tabella? il database è questo :

    CLIENTE : id_cliente - nome_cliente - Cognome_cliente
    CATEGORIA : id_categoria - Nome_cat - Descrizione_cat
    FILE : id_file - nome_file - Descrizione_file - Percorso_file - id_cliente - id_categoria

    ed inoltre, come posso fare per far apparire nella combobox Categoria ( caricata come la precedente ), dei valori in base al cliente selezionato nella combo "cliente"?

    Sto usando un database MySQL. Aiutoooooooo please!!!!!

  2. #2

    Re: selezionare ID da combobox

    Nessuno sà aiutarmi? per favore ragazzuoli!!!!

  3. #3
    Ok ho risolto sbattendoci la testa, fumando una sigaretta e tornando al pc xD
    posto quello che ho fatto perchè può sempre servire a qualcuno
    allora, ho popolato le combo come ho fatto vedere sopra cambiando
    codice:
     ComboBox1.Items.Add(dr(0)
    in
    codice:
    ComboBox1.Items.Add(dr("id_clienti") & "  -  " & dr("nome_cognome"))
    in modo da avere 10 - Francesco Martini ovvero ID_CLIENTE - Nome_cognome
    (io ho messo che nome e cognome siano nello stesso record perchè ho bisogno che sia cosi, ma normalmente si separano).

    poi, una volta fatto questo ho separato la parte numerica in questo modo
    codice:
    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
            stringa = ComboBox1.Text
            indice = stringa.IndexOf("-")
            risultato = stringa.Substring(0, indice - 2)
            TextBox2.Text = risultato
        End Sub

  4. #4
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Veramente... il tuo codice non è proprio... da manuale.
    1° all'utente non gliene importa di vedere l'ID del cliente, anzi lo disturba perchè
    2° quando vorrà cercare il cliente non potrà farlo digitando i caratteri del nome .
    3° per recuperare gli ID sei costretto ad usare codice 'a la VB6'

    DotNET mette a disposizione strumenti potenti, ad esempio:

    Prima di tutto ti crei una classe Elemento con gli elementi che ti servono (in questo caso ID e Descrizione) che puoi 'associare' al Combobox:
    codice:
    Public Class Elemento
        Public Property ID As Integer
        Public Property Descrizione As String
    
        Sub New(ByVal id As Integer, ByVal descrizione As String)
            Me.ID = id
            Me.Descrizione = descrizione
        End Sub
    
        Public Overrides Function ToString() As String
            Return Me.Descrizione
        End Function
    End Class
    Nota che la classe Elemento potrai utilizzarla per qualsiasi altra tabella dato che ID e Descrizione sono piuttosto comuni a molte tabelle (ad es. Articoli, Pagamenti, CodiciIVA, etc.) e non c'è limite al numero di colonne associabili ad ogni elemento!

    Ora non ti resta che sfruttare la classe Elemento al tuo scopo.
    Nota: senza aggiungere alcuna riga di codice al caricamento del tuo reader, infatti ora tu stai facendo così:

    codice:
    ComboSettori.Items.Add(dr(0))
    Bene, ora supponiamo di voler prelevare le informazioni da 3 campi: IDCliente, Cognome e Nome e gli ultimi 2 li vogliamo visualizzare insieme nel combobox.
    E' sufficiente fare così:

    codice:
    While dr.Read()
        ComboSettori.Items.Add(New Elemento(ID:=dr(0), Descrizione:=dr(1) + " " + dr(2)))
    End While
    Infine, per conoscere l'ID dell'elemento selezionato (ad esempio in un Label) userai l'evento:
    codice:
    Private Sub ComboSettori_SelectedValueChanged(...)
        If ComboSettori.SelectedIndex > -1 Then
            lblIDScelto.Text = "ID = " + CType(ComboSettori.SelectedItem, Elemento).ID.ToString()
        End If
    End Sub

  5. #5
    Utente di HTML.it L'avatar di alpynet
    Registrato dal
    Mar 2010
    Messaggi
    123
    Ciao,premesso che la soluzione di gibra è molto interessante (non avrei mai pensato a una soluzione del genere...indice di poca conoscenza, da parte mia, di vb.net e programmazione a oggetti), ma in questi casi non è meglio sfruttare gli oggetti messi a disposizione dalla combo? In pratica io avrei fatto cosi:

    codice:
        Private Sub PopolaComboClienti()
            Dim strSql As String = ""
            Dim strConn As String = ""
            Dim da As New OleDb.OleDbDataAdapter
            Dim dt As New DataTable
            Dim cmd As New Data.OleDb.OleDbCommand
    
            strSql = "SELECT nome_cognome, id_clienti FROM clienti;"
            Try            
                cmd.CommandText = strSql
                cmd.Connection = conn
                da.SelectCommand = cmd
                da.Fill(dt)
                ComboBox1.DataSource = dt
                ComboBox1.DisplayMember = "Autore"
                ComboBox1.ValueMember = "IdAutore"
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            Finally
                cmd.Dispose()
                cmd = Nothing
                da.Dispose()
                da = Nothing
            End Try
        End Sub
    
        Private Function GetID() As Int32
            Return ComboBox1.SelectedValue
        End Function
    
        Private Function GetValue(ByVal field As String) As String
            Return ComboBox1.SelectedItem(field)
        End Function

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.