Файл ACCDB Visual Basic, считываемый для каскадного поля со списком - PullRequest
0 голосов
/ 13 февраля 2019

Итак, у меня есть база данных с тремя столбцами: Производство, Приспособление и Режим

Я использую приведенный ниже код для создания каскадных комбинированных списков в моей форме.

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 включает зарезервированное слово или имя аргументачто написано с ошибкой или отсутствует, или пунктуация неправильная. '

У кого-нибудь есть идеи, почему или чем это вызвано?

Приветствия

1 Ответ

0 голосов
/ 13 февраля 2019

Вы не выбираете любое поле (поля), а свойство Текст действительно только для элемента управления, имеющего фокус, поэтому:

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