es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

VB.NET ComboBox y etiqueta sincronizados desde SQL Server

Estoy tratando de sincronizar la lectura de una tabla de SQL Server con 2 columnas (nomunidad y coutunidad).

La primera columna (nomunidad) se llenará en un combobox y quiero que la segunda columna (coutunidad) se sincronice en una etiqueta con el primer combobox (es decir, cuando cambio el valor del combobox, la etiqueta también debería cambiar haciendo referencia a la tabla).

Puedo hacer esto con 2 comboboxes:

Dim connection As New SqlConnection("Data Source=xxx")

Dim dt As New DataTable
Dim sqlquery As String

connection.Open()

sqlquery = "select * from liste_unités"

Dim SQL As New SqlDataAdapter(sqlquery, connection)
SQL.Fill(dt)

Dim cmd As New SqlCommand(sqlquery, connection)

ComboBoxC1L1.DataSource = dt
ComboBoxC1L1.DisplayMember = "nom_unité"

ComboBox1.DataSource = dt
ComboBox1.DisplayMember = "cout_unité"

pero no sé cómo hacerlo con una etiqueta (en lugar de ComboBox1).

Creo que puedo lograrlo con algo como esto:

Dim sqlcmd As New SqlCommand("select * from liste_unités", connection)
Dim myreader As SqlDataReader

myreader = sqlcmd.ExecuteReader()
myreader.Read()

If myreader.HasRows Then
   Label1.Text = myreader.Item("cout_unité").ToString
End If

pero esto solo lee la primera fila y no cambia el valor de la etiqueta cuando cambia el valor seleccionado del primer combobox.

¿Cuál es la forma más fácil y eficiente de hacerlo?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para sincronizar la segunda columna (cout_unité) con el valor seleccionado del primer combobox (nom_unité), puedes utilizar el evento SelectedIndexChanged del combobox para actualizar el valor de la etiqueta.

    Aquí tienes un ejemplo de código:

    “`vb.net
    Private Sub ComboBoxC1L1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBoxC1L1.SelectedIndexChanged
    Dim selectedRow As DataRowView = ComboBoxC1L1.SelectedItem
    Dim cout As Decimal = selectedRow.Row.Field(Of Decimal)(“cout_unité”)
    Label1.Text = cout.ToString()
    End Sub


    Explicación: - El evento `SelectedIndexChanged` se activa cada vez que cambia el valor seleccionado del combobox. - `ComboBoxC1L1.SelectedItem` obtiene el elemento seleccionado del combobox como un `DataRowView`. - `selectedRow.Row.Field(Of Decimal)("cout_unité")` obtiene el valor de la columna "cout_unité" de la fila seleccionada y lo convierte en un `Decimal`. - `Label1.Text = cout.ToString()` establece el texto de la etiqueta con el valor de `cout` como una cadena de caracteres. Es importante tener en cuenta que debes establecer la propiedad `ValueMember` del combobox en "nom_unité" para que este código funcione: ```vb.net ComboBoxC1L1.ValueMember = "nom_unité"

    Esto le indica al combobox qué columna utilizar como valor para cada elemento de la lista.

Comments are closed.