将 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

无法引用属性或方法/类型不匹配 Microsoft Access

在 Microsoft Access 数据表上自定义自动完成功能