+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17

combobox

  1. #1
    gnappi non è in linea Scolaretto
    Ho un combobox che viene popolata da una lunga lista di uffici.Ogni singolo item è composto da COMUNE-INDIRIZZO(ID)
    Ora,per localizzare il record,estraggo l'ID e poi faccio eseguire una query.
    Chiedo...esiste un sistema meno "complicato" ,"più elegante" per ottenere lo stesso risultato?
    Grazie.

        Private Sub elencoUffici_SelectedIndexChanged(sender As Object, e As EventArgs) Handles elencoUffici.SelectedIndexChanged
            Me.FILTRO.Text = "DISATTIVA FILTRO"
            FILTRO.Tag = 2
            FILTRO.Image = Bitmap.FromFile("img/chiusura.png")
            Dim myPosIn As Integer = elencoUffici.Text.IndexOf("(")
            Dim myPosFi As Integer = elencoUffici.Text.IndexOf(")")
            Dim myId As String = elencoUffici.Text.Substring(myPosIn + 1, (myPosFi - myPosIn - 1))
            UfficiTableAdapter.ricercaUfficio(TabelleDataSet.uffici, Val(myId))
        End Sub
    

  2. #2
    L'avatar di SirJo
    SirJo non è in linea Scolaretto
    Al combobox puoi aggiungere oggetti generici, non per forza solo testo, e questa è una gran comodità.
    Crei un tuo oggetto con i campi che ti servono e aggiungi questi oggetti al combobox.
    C'è però una cosa da dire, e cioè che in questo caso il combobox non sa cosa deve mostrare quando si apre la lista, e quindi (nel tuo oggetto) devi creare una sub ToString che ritorna proprio la scritta che vuoi venga visualizzata.
    Nel momento in cui l'utente sceglie una voce dal combobox avrai il riferimento all'oggetto dal quale quindi puoi estrarre solo il campo ID o quello che vuoi.
    Comodissimo !!!!!

    ad esempio:
        Private Class ufficio
            Public Comune As String = ""
            Public Indirizzo As String = ""
            Public ID As String = ""
            Public Altro As String = ""
            Public Note As String = ""
            .........
            Public Overrides Function ToString() As String
                Return Comune & " " & Indirizzo & " (" & ID & ")"
            End Function
        End Class
    
    Il tuo codice oltre ad non essere "elegante" ha anche un problema di fondo, e cioè (ad esempio) se un utente nel campo indirizzo inserisce "via Milano, 12 (terzo piano)" capisci bene che il programma fallisce
    Ultima modifica di SirJo; 26-06-2021 12:33 

  3. #3
    Oltre al saggio consiglio di SirJo, sarebbe il caso che fornissi maggiori dettagli.

    Ad esempio, il popolamento della combobox come avviene ?
    ℹ️ Leggi di più su Fix ...

  4. #4
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Quote Originariamente inviato da SirJo Visualizza il messaggio
    e questa è una gran comodità.
    Quote Originariamente inviato da SirJo Visualizza il messaggio
    Comodissimo !!!!!
    Diciamo semplicemente che rispecchia la filosofia O.O.
    La comodità è un'altra cosa.
    ℹ️ Leggi di più su Brontolo ...

  5. #5
    Sgrubak non è in linea Scribacchino
    Sfrutterei l'idea di Sirjo, ma non farei l'override di ToString... Si potrebbe impostare una proprietà ReadOnly, che restituisca i dati formattati, e la si collega al DisplayMember della combo...

  6. #6
    Origine Dati + SirJo + Sgrubak = EF = Brontolo OOP
    Ultima modifica di Fix; 27-06-2021 07:46 
    ℹ️ Leggi di più su Fix ...

  7. #7
    gnappi non è in linea Scolaretto
    Sirio,grazie moltissimo.
    La tua soluzione è certamente la migliore in assoluto, ma non è al mio livello! Farò delle ricerche e poi -sempre che riesca a concretizzare qualcosa- ti farò sapere.
    Grazie ancora.

    P.S. : a proposito delle parentesi: anche in questo caso il tuo ragionamento non fa una piega.
    Sostituirò di parentesi "(" con quelle "{" per rendere molto meno probabile che si verifichi la tua ipotesi.

  8. #8
    gnappi non è in linea Scolaretto
    Quote Originariamente inviato da Fix Visualizza il messaggio
    Oltre al saggio consiglio di SirJo, sarebbe il caso che fornissi maggiori dettagli.

    Ad esempio, il popolamento della combobox come avviene ?
    Tramite un accesso ad db :
        Sub eUffici()
            Dim strSql As String = "SELECT id,Comune ,via, (comune +'-'+ via+'{' + cstr(id) + '}') As ufficio FROM uffici ORDER BY comune"
            Dim cmd As New OleDbCommand(strSql, cnn)
            Dim dr As OleDbDataReader
            Try
                cnn.Open()
                dr = cmd.ExecuteReader
                While dr.Read
                    uffici.elencoUffici.Items.Add(dr(3))
                End While
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            Finally
                cnn.Close()
            End Try
        End Sub
    

  9. #9
    L'avatar di SirJo
    SirJo non è in linea Scolaretto
    prova questo codice e vedi se riesci a capire qualcosa, può essere un inizio per studiarsi un po' di OOP
    il codice si poteva fare ancora più compatto ma ho preferito fare così per una migliore leggibilità

        Private Class ufficioCls
            Public ID As String = ""
            Public Comune As String = ""
            Public Via As String = ""
            Public Overrides Function ToString() As String
                Return Comune & " - " & Via & " (" & ID & ")"
            End Function
        End Class
    
        Sub eUffici()
            Dim strSql As String = "SELECT id,Comune,via FROM uffici ORDER BY comune"
            Dim cmd As New OleDbCommand(strSql, cnn)
            Dim dr As OleDbDataReader
            Try
                cnn.Open()
                dr = cmd.ExecuteReader
                While dr.Read
                    Dim ufficio = New ufficioCls
                    ufficio.ID = dr(0)
                    ufficio.Comune = dr(1)
                    ufficio.Via = dr(2)
                    uffici.elencoUffici.Items.Add(ufficio)
                End While
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            Finally
                cnn.Close()
            End Try
        End Sub
    
    per spiegazioni chiedi pure
    Ultima modifica di SirJo; 27-06-2021 18:16 

  10. #10
    gnappi non è in linea Scolaretto
    Quote Originariamente inviato da SirJo Visualizza il messaggio
    prova questo codice e vedi se riesci a capire qualcosa, può essere un inizio per studiarsi un po' di OOP
    il codice si poteva fare ancora più compatto ma ho preferito fare così per una migliore leggibilità

        Private Class ufficioCls
            Public ID As String = ""
            Public Comune As String = ""
            Public Via As String = ""
            Public Overrides Function ToString() As String
                Return Comune & " - " & Via & " (" & ID & ")"
            End Function
        End Class
    
        Sub eUffici()
            Dim strSql As String = "SELECT id,Comune,via FROM uffici ORDER BY comune"
            Dim cmd As New OleDbCommand(strSql, cnn)
            Dim dr As OleDbDataReader
            Try
                cnn.Open()
                dr = cmd.ExecuteReader
                While dr.Read
                    Dim ufficio = New ufficioCls
                    ufficio.ID = dr(0)
                    ufficio.Comune = dr(1)
                    ufficio.Via = dr(2)
                    uffici.elencoUffici.Items.Add(ufficio)
                End While
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            Finally
                cnn.Close()
            End Try
        End Sub
    
    per spiegazioni chiedi pure
    Sirio,grazie tantissimo. Io non osavo chiedere tanto.
    Sto provando ad implementare quanto sopra nel mio programma.
    A presto.

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. popolare combobox da combobox html
    Da Sn0rky nel forum Visual Basic .Net
    Risposte: 3
    Ultimo Post: 31-08-2019, 13:35
  2. contenuto combobox che dipende da un'altra combobox
    Da maxs84 nel forum Microsoft Access
    Risposte: 6
    Ultimo Post: 22-12-2016, 11:58
  3. Combobox
    Da Frankq nel forum Visual Basic 6
    Risposte: 3
    Ultimo Post: 02-12-2012, 21:21
  4. ComboBox
    Da Maxxim nel forum Microsoft Word
    Risposte: 13
    Ultimo Post: 28-03-2010, 23:01
  5. [EXCEL]Combobox attivate da Combobox Dinamiche
    Da arimans nel forum Microsoft Excel
    Risposte: 6
    Ultimo Post: 05-04-2008, 11:25