Не удается выполнить привязку к свойству или столбцу в источнике данных. vb.net

У меня ошибка Не удается привязать к свойству или столбцу, пожалуйста, решение. Для заметок использую Studio Visuals 2010. Есть ли лучшее решение или рекомендация?

спасибо Джек

Dim Path As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
Dim cn As String = "provider=Microsoft.Jet.OLEDB.4.0; data source = " & Path & "; Extended Properties=dBase IV"
    Dim WithEvents bmb As BindingManagerBase
    Dim dsTest As New DataSet
Private Sub CreateDataSetfillgridview()
 Try
            Dim query As String = "select EMPLOYEEN,HIREDATE FROM TRIAL"
            Using con As OleDbConnection = New OleDbConnection(cn)
                Using cmd As OleDbCommand = New OleDbCommand(CStr(query), con)
                    Using da As New OleDbDataAdapter(cmd)
                        Dim dt As DataTable = New DataTable()
                         da.Fill(dt)
                        dsTest.Tables.Add(dt)
                    End Using
                End Using
            End Using
            'Bind controls 
            DataGrid1.DataSource = dsTest
'if I comment the code below then a dataset appears as screenshot below
            Me.TextBox1.DataBindings.Add("Text", dsTest, "EMPLOYEEN")
            Dim MyBinding As New Binding("Value", dsTest, "HIREDATE")
            AddHandler MyBinding.Format, AddressOf dtFormatter
            AddHandler MyBinding.Parse, AddressOf dtParser
            DateTimePicker1.DataBindings.Add(MyBinding)

            'Force a Refresh of bound controls
            bmb = Me.BindingContext(dsTest, "TRIAL")
            bmb.Position = bmb.Count
            bmb.Position = 0
        Catch myerror As OleDbException
            MessageBox.Show("Error: " & myerror.Message)
        Finally
        End Try
    End Sub

Не удается выполнить привязку к свойству или столбцу в источнике данных. vb.netНе удается выполнить привязку к свойству или столбцу в источнике данных. vb.netНе удается выполнить привязку к свойству или столбцу в источнике данных. vb.netНе удается выполнить привязку к свойству или столбцу в источнике данных. vb.netНе удается выполнить привязку к свойству или столбцу в источнике данных. vb.netНе удается выполнить привязку к свойству или столбцу в источнике данных. vb.net

Конечно не может связать. Когда вы заселили dsTest.Tables("TRIAL")? Нигде, что вы нам показали.

user18387401 21.03.2022 06:10

@ user18387401, так что решение

Jack 21.03.2022 07:02

Я указал, что вы не заполняете DataTable, который вы связываете. Решение очевидно. Может быть, взгляните на свой код и поймите, почему вы не делаете то, что, очевидно, намеревались сделать.

user18387401 21.03.2022 09:01
da.Fill(dt) -> da.Fill(ds.Tables("TRIAL"))
Caius Jard 21.03.2022 11:00

Visual Studio может сделать всю вашу жизнь намного проще в этом отношении. Добавьте новый тип файла DataSet, откройте проводник сервера, добавьте соединение с вашей базой данных доступа, разверните его и перетащите узлы из проводника сервера в набор данных, затем перейдите в форму, откройте окно источников данных и перетащите узлы набора данных на форму. VS с помощью этих двух операций перетаскивания напишет весь тот код, который вы там написали, и многое другое, и он будет работать с первого раза.

Caius Jard 21.03.2022 11:00

@CaiusJard, я использовал ваш код, есть ошибка «Значение не может быть нулевым. Имя параметра dataTable». Я обновил ваш почтовый индекс и использую базу данных dbf

Jack 21.03.2022 14:46

Вы звонили dsTest.Tables.Add("TRIAL"), когда создавали свой набор данных?

Caius Jard 21.03.2022 18:22

Также включите Option Strict/Explicit. Вы оставили Me.DataGrid1.DataSource = dt бездельничать в своем коде, но dt нигде не определен, поэтому тот факт, что он вообще работает, указывает мне на то, что ваш VB, вероятно, все еще работает в режиме «закинуть всю старую хрень и ждать ошибок во время выполнения»

Caius Jard 21.03.2022 18:30

@CaiusJard, если я прокомментирую код ниже, то появится набор данных, как на снимке экрана ниже, который я отметил в своем коде, тогда набор данных появится в представлении сетки. Почему gridview не загружает строку автоматически, и если я раскомментирую код, все равно появится ошибка «Невозможно привязать к свойству или столбцу EMPLOYEEN в источнике данных».

Jack 22.03.2022 03:11

Вы не можете установить DataSource элемента управления как DataSet, если вы также не установите свойство DataMember. Набор данных — это набор таблиц, DataMember указывает, какая таблица. Либо установите DataSource на DataTable, либо установите DataSource на DataSet и установите DataMember на имя таблицы в наборе.

Caius Jard 22.03.2022 06:56

Вам не кажется, что это невероятно тяжелая работа? Создайте новый проект (чтобы не мешать существующему коду), подключите проводник сервера к файлу базы данных, поместите файл нового типа набора данных, перетащите таблицы из проводника сервера в набор данных, затем откройте окно «Источники данных» и перетащите узлы из набора данных на форму. Весь этот код будет написан для вас

Caius Jard 22.03.2022 06:59

@CaiusJard, спасибо за ваше руководство, так что мне удалось это сделать.

Jack 24.03.2022 09:39
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
12
41
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это все благодаря гайду от @CaiusJard

Dim Path As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
Dim cn As String = "provider=Microsoft.Jet.OLEDB.4.0; data source = " & Path & "; Extended Properties=dBase IV"
    Dim WithEvents bmb As BindingManagerBase
    Dim dsTest As New DataSet
Private Sub CreateDataSetfillgridview()
 Try
            Dim query As String = "select EMPLOYEEN,HIREDATE FROM TRIAL"
            Using con As OleDbConnection = New OleDbConnection(cn)
                Using cmd As OleDbCommand = New OleDbCommand(CStr(query), con)
                    Using da As New OleDbDataAdapter(cmd)
                    Dim dt As DataTable = New DataTable("TRIAL")
                         da.Fill(dt)
                        dsTest.Tables.Add(dt)
                    End Using
                End Using
            End Using
            'Bind controls 
          DataGrid1.DataSource = dsTest.Tables("TRIAL")
            Me.TextBox1.DataBindings.Add("Text", dsTest, "TRIAL.EMPLOYEEN")
            Dim MyBinding As New Binding("Value", dsTest, "TRIAL.HIREDATE")
            AddHandler MyBinding.Format, AddressOf dtFormatter
            AddHandler MyBinding.Parse, AddressOf dtParser
            DateTimePicker1.DataBindings.Add(MyBinding)

            'Force a Refresh of bound controls
            bmb = Me.BindingContext(dsTest, "TRIAL")
            bmb.Position = bmb.Count
            bmb.Position = 0
        Catch myerror As OleDbException
            MessageBox.Show("Error: " & myerror.Message)
        Finally
        End Try
    End Sub

Другие вопросы по теме