我正在嘗試將 SQL Server 表的讀取與 2 列(nom_unité 和 cout_unité)同步。
第一列 (nom_unité) 將被填充到一個組合框,我希望第二列 (cout_unité) 與第一個組合框同步到一個標簽中(意思是,當我更改組合框值時,標簽也應該參照表格進行更改)。
我可以用 2 個組合框來做到這一點:
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é"
但我不知道如何使用標簽(而不是 ComboBox1)來做到這一點。
我相信我可以通過這樣的方式實作它:
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
但這只是讀取第一行,而不是在更改第一個組合框選定值時更改標簽值。
如何以最簡單、最有效的方式做到這一點?
謝謝 :)
uj5u.com熱心網友回復:
由于您已將組合框的資料源分配給包含所需資訊的資料表,因此您可以在組合框的值更改時獲取該資訊。
我開始了一個新的 Windows 表單專案,并在 Form1 上放置了一個組合框(名為“cbNomUnité”)和一個標簽(名為“lblCoutUnité”)并使用了以下代碼:
Imports System.Data.SqlClient
Public Class Form1
Dim connStr As String = "Server=.\SQLEXPRESS;Database=Testing;Trusted_Connection=true;"
Sub PopulateCB()
Dim sql = "SELECT nom_unité, cout_unité FROM liste_unités"
Dim dt As New DataTable
Using conn As New SqlConnection(connStr),
da As New SqlDataAdapter(sql, conn)
da.Fill(dt)
End Using
cbNomUnité.DataSource = dt
cbNomUnité.DisplayMember = "nom_unité"
End Sub
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cbNomUnité.SelectedIndexChanged
Dim cb = DirectCast(sender, ComboBox)
If cb.SelectedIndex >= 0 Then
Dim val = DirectCast(cb.SelectedItem, DataRowView).Row.Field(Of String)("cout_unité")
lblCoutUnité.Text = val
End If
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
PopulateCB()
End Sub
End Class
要獲得執行此操作的程式:

(重繪 頁面以再次查看影片。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/401866.html
標籤:sql-server 数据库 网络 组合框 标签
