【问题标题】:Vb.Net Windows Form Search Access DatabaseVb.Net Windows 窗体搜索访问数据库
【发布时间】:2013-11-30 06:06:22
【问题描述】:

好的,希望我能正确解释这一点。我有大约 3 个月的使用 Access 数据库的专业经验,而没有使用 Vb.net,但我正在做一个项目来获得我的学位。这个项目的目标是为我父母的公司 All Keyed Up Lock & Safe 创建一个 Windows 窗体。

此表单将链接到包含 4 个表的 Access 数据库,这些表是公司一些客户的列表。然后,该表单将允许您在该数据库中搜索特定客户,然后返回有关该特定客户的所有信息。

这对于计费很有用,还可以让我们在离开前查看我们对客户的任何特殊说明。这四个表是[McDonald's-Corporate Stores], [McDonald's-Independently Owned], [Sonic-Corporate Stores], [Sonic-Independently Owned]

基本上我遇到的问题是搜索功能。我终其一生都无法想办法让它发挥作用。我已经尝试了 4 或 5 种不同的解决方案,但仍然一无所获。我正在使用 Visual Studio 2013。这是我目前的代码,用于搜索按钮:

  Private Sub SearchButton_Click(sender As Object, e As EventArgs) Handles SearchButton.Click
        Dim Connection As New SqlClient.SqlConnectionStringBuilder
        Connection.DataSource = "file:///C:\Users\thelukester145\Documents\All%20Keyed%20Up\All%20Keyed%20Up,%20Lock%20&%20Safe,%20LLC.accdb"
        Dim objSQLConnection = New SqlClient.SqlConnection(Connection.ConnectionString)
        Dim cmd As New SqlCommand()
        Dim myTable As New DataTable()
        Dim SearchFor = SearchBox.Text
        If AddressButton.Checked Then
            cmd.Connection = objSQLConnection
            cmd.CommandText = "SELECT * FROM [McDonald's-Corporate Stores] WHERE [Address] LIKE '%" & SearchFor & "%'"
            Dim myAdapter As New SqlDataAdapter(cmd)
            myAdapter.Fill(myTable)
            DataGrid.DataGridView1.DataSource = myTable
        ElseIf NumberButton.Checked Then
            cmd.Connection = objSQLConnection
            cmd.CommandText = "SELECT * FROM [McDonald's-Corporate Stores] WHERE [McOpCo#] LIKE '%" & SearchFor & "%'"
            Dim myAdapter As New SqlDataAdapter(cmd)
            myAdapter.Fill(myTable)
            DataGrid.DataGridView1.DataSource = myTable
        End If
        DataGrid.Show()


    End Sub

如您所见,我一直试图让它仅适用于一张桌子,甚至无法做到这一点。我宁愿不使用 datagrid 方法来显示信息,而是将其显示在位于表单上的文本框中。

对于这么长的问题,任何帮助都会非常感激和抱歉。

【问题讨论】:

  • 那么到底是什么问题?数据网格没有被填满吗?还是您不知道如何在表单字段而不是网格中显示数据?我不认为你在问一个具体的问题,就其本身而言。
  • 很抱歉,我想我并没有真正做到足够具体。问题是我真的不知道从哪里开始。我从来没有尝试过将 vb.net 程序链接到 Access 数据库。我最终确实弄清楚了。但我也不确定如何从 Vb.net 运行查询,也不确定使用什么逻辑来执行搜索。如果有帮助
  • 上面的代码有效吗?
  • 没有我的代码崩溃了。让我看看我能不能得到确切的错误。
  • 这里是确切的错误:System.Data.dll 中发生了“System.Data.SqlClient.SqlException”类型的未处理异常,发生在 Private Sub SearchButton_Click(sender As Object, e As EventArgs) Handles SearchButton.Click

标签: vb.net


【解决方案1】:

你在哪里打开连接。可以试试下面的代码建立连接吗:

Dim cnnOLEDB As New OleDbConnection
Dim cmdOLEDB As New OleDbCommand
Dim strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & System.Environment.CurrentDirectory & "\URDataBaseName.mdb"
cnnOLEDB.ConnectionString = strConnectionString
cnnOLEDB.Open()

' your code goes here

cnnOLEDB.Close()

【讨论】:

  • 嗯,defi 让我比以前走得更远。现在它在 cnnOLEDB.Open() 处崩溃。它说问题在于数据库是一种无法识别的数据库格式
  • 看来这个问题是由数据库引擎问题引起的,我相信我可以解决它。非常感谢!
  • @thelukester 嘿,你修好了吗?如果不是,错误信息是什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-01
相关资源
最近更新 更多