每個人。
我正在嘗試建立一個專案來記錄測驗人員的生產故障。
我有一個代碼可以檢索在該特定作業中作業的操作員 ID。

代碼:
Private Sub TextBox1_Leave(sender As Object, e As EventArgs) Handles TextBox1.Leave
Dim sqlconn As New SqlClient.SqlConnection
Dim CurSel As String = TextBox1.Text
sqlconn.ConnectionString = "server = ESS/SQL;" &
"Database = Maindb;integrated security=true"
sqlconn.Open()
Dim CurList3 As New SqlClient.SqlCommand("SELECT Employee_Clock_No FROM wip.WIP_Book_Trans WHERE WO_No ='" & CurSel & "'", sqlconn)
Dim dt3 As New DataTable()
dt3.Load(CurList3.ExecuteReader)
DataGridView1.DataSource = dt3
sqlconn.Close()
End Sub

我想要實作的是向 DataGridView 添加第二列,理論上它將在他們的代碼旁邊從不同的 SQL 表中查找并回傳員工姓名
見下圖 Employee_Clock_No -> Employee_Name

提前致謝。
SQL 在 datagridview 中回傳資料表,并根據第一列中的值進一步將資訊回傳到不同的列。
uj5u.com熱心網友回復:
歡迎來到 JOIN 的美妙世界。這些是 SQL 的中流砥柱,因此請熟悉它們。此外,您需要使用引數化查詢而不是字串連接來將用戶資料包含在 SQL 陳述句中。其他任何事情最終都會給你帶來大麻煩,通常是遲早的。
Private Const connectionString As String = "server = ESS/SQL;Database = Maindb;integrated security=true"
Private Sub TextBox1_Leave(sender As Object, e As EventArgs) Handles TextBox1.Leave
Dim SQL As String = "
SELECT bt.Employee_Clock_No, ed.Employee_Name
FROM wip.WIP_Book_Trans bt
INNER JOIN personnel.Employee_Details ed ON ed.Employee_Clock_No = bt.Employee_Clock_No
WHERE bt.WO_No = @WorkOrder"
Dim dt As New DataTable()
Using conn As New SqlClient.SqlConnection(connectionString), _
cmd As New SqlClient.SqlCommand(SQL, conn)
cmd.Parameters.Add("@WorkOrder", SqlDbType.VarChar, 8).Value = TextBox1.Text
conn.Open()
dt.Load(cmd.ExecuteReader())
End Using
DataGridView1.DataSource = dt
End Sub
如果該WO_No列確實是整數,請進行相應調整。
另外,請注意Using塊。這會處理關閉連接,并且以比呼叫.Close()自己更安全的方式進行。事實上,如果拋出例外(由于缺少查詢引數,可能隨時發生)該.Close()行將永遠不會運行,從而使打開的連接掛起。做到這一點就足夠了,您可以將所有人鎖定在資料庫之外。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/530212.html
