所以我为项目制作了一个rota系统,我需要一个文本框来输出用户当前在组合框中选择的员工的合同时间。问题是,我不知道如何去做;
Sub GetContractedHours()
Dim sSql As String
Dim newds As New DataSet
Dim newdt As New DataTable
sSql = "SELECT emp_contractedhours FROM Employee WHERE emp_fn ='" & cboEmpName.Text & "%'"
Dim con As New SQLiteConnection(ConnectionString)
Dim cmd As New SQLiteCommand(sSql, con)
con.Open()
Dim da As New SQLiteDataAdapter(cmd)
da.Fill(newds, "Employee")
newdt = newds.Tables(0)
txtUserAlertHours.DataSource = newdt
con.Close()
End Sub
请帮忙! :)
答案 0 :(得分:0)
您不需要任何代码。只需首先获取所有数据,然后绑定ComboBox
和TextBox
,例如
Dim table As New DataTable
Dim conection As New SQLiteConnection(ConnectionString)
Dim adapter As New SQLiteDataAdapter("SELECT emp_fn, emp_contractedhours FROM Employee", connection)
adapter.Fill(table)
cboEmpName.DisplayMember = "emp_fn"
cboEmpName.DataSource = table
txtUserAlertHours.DataBindings.Add("Text", table, "emp_contractedhours")
当您在TextBox
中进行选择时,ComboBox
会自动填充。这就是数据绑定的工作原理。
如果您确实希望每次查询数据库,那么您根本不应该使用数据适配器。您只需检索一个值,而这正是ExecuteScalar
的确切含义。使用适当的SQL创建命令,调用ExecuteScalar
并将结果分配给Text
的{{1}}。
如果你确实想要使用你拥有的代码进行数据绑定(这将是愚蠢的),那么你可以像我上面演示的那样绑定。请注意,如果您每次都要使用不同的TextBox
,则需要先删除旧的绑定。如果您没有绑定任何其他属性,则可以通过调用DataTable
集合上的Clear
来轻松完成此操作。