将 Microsoft Access 中的数据绑定到文本框
Posted
技术标签:
【中文标题】将 Microsoft Access 中的数据绑定到文本框【英文标题】:Bind Data From Microsoft Acess to Textbox 【发布时间】:2013-12-13 08:51:24 【问题描述】:我有一个名为 PriceTesting
的数据库(使用 Microsoft Access 2007),其中包含一个名为 tbl_dress
的表,其中包含以下列:
Dress_ID, Dress_Name, Dress_Price
在表单中,我创建了一个组合框和一个文本框。
到目前为止,我已经使用此代码成功地将组合框与Dress_Name
数据绑定:-
Private Sub FillCombo()
Try
Dim fillcon As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\annonymous\Documents\Visual Studio 2012\Projects\DressTest\DressTest\db\PriceTesting.accdb")
Dim query As String = ("SELECT Dress_Name FROM tbl_dress")
Dim da As New OleDb.OleDbDataAdapter(query, fillcon)
Dim ds As New DataSet
da.Fill(ds)
ComboBox1.ValueMember = "Dress_Name"
ComboBox1.DataSource = ds.Tables(0)
ComboBox1.SelectedIndex = 0
Catch ex As Exception
MsgBox("ERROR : " & ex.Message.ToString)
End Try
End Sub
它可以工作...每次加载表单时,组合框都会包含来自Dress_Name
列的数据。
现在我想要texbox.text = Dress_Price WHERE Dress_Name = combox.selecteditem
知道怎么做吗? 我想到的只有这个:-
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
query = " SELECT Dress_Price FROM tbl_dress WHERE Dress_Name = ' " & Combobox1.Text & " ' "
Textbox1.text = query
End Sub
【问题讨论】:
另外,这个问题与Visual Studio无关。 【参考方案1】:试试这个并确保在您的查询中添加Dress_Price“
Private Sub FillCombo()
Try
Dim fillcon As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\annonymous\Documents\Visual Studio 2012\Projects\DressTest\DressTest\db\PriceTesting.accdb")
Dim query As String = ("SELECT Dress_Name, Dress_Price FROM tbl_dress")
Dim da As New OleDb.OleDbDataAdapter(query, fillcon)
Dim ds As New DataSet
da.Fill(ds)
ComboBox1.ValueMember = "Dress_Name"
ComboBox1.DataSource = ds.Tables(0)
ComboBox1.SelectedIndex = 0
texbox.DataBindings.Clear()
texbox.DataBindings.Add("Text", ds.Tables(0), "Dress_Price")
Catch ex As Exception
MsgBox("ERROR : " & ex.Message.ToString)
End Try
End Sub
或者像这样更改您想法中的代码,并确保在您的查询中添加 Dress_Price"
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
dim dt as DataTable = Combobox1.DataSource
dim dr as DataRow = dt.Rows(Combobox1.SelectedIndex)
Textbox1.text = iif(dr.isNull("Dress_Price"), "", dr.isNull("Dress_Price").Tostring)
End Sub
【讨论】:
它有效.. 非常感谢.. 我将在我的实际项目中实现它.. :)【参考方案2】:Dim fillcon As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\annonymous\Documents\Visual Studio 2012\Projects\DressTest\DressTest\db\PriceTesting.accdb")
Dim query As String = " SELECT Dress_Price FROM tbl_dress WHERE Dress_Name = ' " & Combobox1.Text & "'"
Dim da As New OleDb.OleDbDataAdapter(query, fillcon)
Dim dt As New DataTable
da.Fill(dt)
Textbox1.text = dt.rows(0).item(0)
搜索参数以避免sql注入。也尝试改进查询并使用 ID 代替dress_name
【讨论】:
这只是一个测试表格,如果它有效,我将在我的实际项目中实现代码...我需要将 Dress_Name 用于实际项目.." 搜索参数以避免sql注入“你能解释更多关于这个...我尝试了一个使用我从谷歌找到的执行标量的代码..但它没有工作.. 我遇到了一个错误:位置 0 没有行。以上是关于将 Microsoft Access 中的数据绑定到文本框的主要内容,如果未能解决你的问题,请参考以下文章
使用主窗体中的未绑定文本框过滤 Microsoft Access 中的子窗体
C# WPF ComboBox - 排除绑定数据的最后一行(或空格)(从 Microsoft Access 绑定)
将 Microsoft SQL Server 中的文件表链接到 Microsoft Access 2016 中的表
将表单中的数据输入到联结表 Microsoft Access