级联组合框的 Visual Basic ACCDB 文件读取

Posted

技术标签:

【中文标题】级联组合框的 Visual Basic ACCDB 文件读取【英文标题】:Visual Basic ACCDB File Read for Cascading Combo Box 【发布时间】:2019-02-13 17:39:53 【问题描述】:

所以我有一个包含三列的访问数据库:制造、夹具和模式

我正在使用下面的代码在我的表单中创建级联组合框。

Imports System.Data.OleDb


Public Class Add_Fixtures
   Dim con As New OleDbConnection
   Dim constring As String
   Dim cmd As New OleDbCommand
   Dim dr As OleDbDataReader
   Dim cmd1 As New OleDbCommand
   Dim dr1 As OleDbDataReader
   Dim cmd2 As New OleDbCommand
   Dim dr2 As OleDbDataReader

Private Sub Add_Fixtures_Load(sender As Object, e As EventArgs) Handles Me.Load
    constring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|/FixtureLibrary.accdb"
    With con
        .ConnectionString = constring
        .Open()
    End With

    With cmd
        .Connection = con
        .CommandType = CommandType.Text
        .CommandText = "SELECT DISTINCT Fixtures.Manufacture from Fixtures;"
    End With

    dr = cmd.ExecuteReader()

    While dr.Read
        cbManufacture.Items.Add(dr("Manufacture"))
    End While

    With cmd1
        .Connection = con
        .CommandType = CommandType.Text
        .CommandText = "SELECT  from Fixtures where [Manufacture]='" & Me.cbManufacture.Text & "';"
    End With

    dr1 = cmd1.ExecuteReader()

    While dr1.Read
        cbFixture.Items.Add(dr1("Fixture"))
    End While

    With cmd2
        .Connection = con
        .CommandType = CommandType.Text
        .CommandText = "SELECT DISTINCT Fixtures.Mode from Fixtures where [Fixture] ='" & Me.cbFixture.Text & "';"
    End With

    dr2 = cmd2.ExecuteReader()

    While dr2.Read
        cbMode.Items.Add(dr2("Mode"))
    End While
End Sub
End Class

但是在这一行:dr1 = cmd1.ExecuteReader()

我收到此错误

System.Data.OleDb.OleDbException: 'SELECT 语句包含拼写错误或缺失的保留字或参数名称,或者标点不正确。'

有人知道为什么或是什么原因造成的吗?

干杯

【问题讨论】:

你有一个错字。运行调试器应该可以准确地告诉你它在哪一行。 代码是 VB.NET 但您将其标记为 VBA。你确定标签吗? VB.NET 和 VBA 是两种截然不同的语言,它们共享前两个字母,仅此而已。 修正了错字,但现在在组合框 cbFixture 或 cbMode 中没有得到任何东西 你应该为你的新问题提出一个新问题。如果这个问题解决了,那你要么自己回答,要么以后觉得对别人没有帮助就删掉。 【参考方案1】:

您没有选择任何字段,并且属性Text仅对具有焦点的控件有效,因此:

   .CommandText = "SELECT * from Fixtures where [Manufacture]='" & Me.cbManufacture.Value & "';"

【讨论】:

那应该是个参数。

以上是关于级联组合框的 Visual Basic ACCDB 文件读取的主要内容,如果未能解决你的问题,请参考以下文章

如何在visual basic 2017中获取访问字段属性

将电子表格 (OpenOffice) 导入 Visual Basic .net 组合框

Visual Basic - 使用组合框将 Access 表中的数据填充到文本框

如何将 Visual Basic 6 组合框与 Microsoft Access 2007 表中的字段链接

如何清除剑道组合框的值

WPF,MVVM从字典中填充级联组合框