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

Vba 为级联组合框读取Visual Basic ACCDB文件,vba,ms-access,combobox,cascading,Vba,Ms Access,Combobox,Cascading,所以我有一个access数据库,有三列:制造、夹具和模式 我使用下面的代码在表单中创建级联组合框 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 OleDbCo

所以我有一个access数据库,有三列:制造、夹具和模式

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

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.OLEDBEException:“SELECT语句包含拼写错误或缺少的保留字或参数名称,或者标点不正确。”

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

Cheers

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

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

你打错了。运行调试器应该准确地告诉您它在哪一行。代码是VB.NET,但您将其标记为VBA。你确定这些标签吗?VB.NET和VBA是两种完全不同的语言,它们共享前两个字母。修复了拼写错误,但现在在combobox cbFixture或CBMode中没有任何内容。您应该针对新问题提出新问题。如果这个问题解决了,那么你可以自己回答,或者如果你觉得它对将来的其他人没有帮助,就删除它。这应该是一个参数。