После просмотра нескольких вопросов / ответов на Stackoverflow и других форумах я все еще теряюсь в том, почему не могу обновить базу данных Access из данных. Я пытаюсь взять данные из таблицы данных и вставить эти данные в таблицу доступа, если она пуста, и заменить таблицу, если в ней уже есть данные. Я могу успешно заменить таблицу, но данные из таблицы данных не добавляются.
Однако используемый мной метод не работает. Моя таблица данных поступает из связанного источника данных, и уровень доступа называется так:
ConnectedDB.UpdateTable(DBTable, bsDataSource.DataSource)
Где ConnectedDB
- это класс уровня доступа, DBTable
- строка, содержащая доступ имя таблицы, а bsDataSource
- связанные данные. Как видите, я передал .Datasource
, чтобы превратить его в таблицу данных.
Вот оригинальный (до 29 января) раздел моей работы по добавлению таблицы данных обратно в таблицу Access:
Public Function UpdateTable(strTable As String, dgDataTable As DataTable) As Boolean
Dim DS As New DataSet
dgDataTable.TableName = strTable
DS.Tables.Add(dgDataTable)
Using OpenCon = New OleDb.OleDbConnection(strConnectionString)
Using DataAdapter As New OleDbDataAdapter("SELECT * FROM " & strTable, OpenCon)
Dim DBcmd As OleDbCommandBuilder = New OleDbCommandBuilder(DataAdapter)
DBcmd.QuotePrefix = "["
DBcmd.QuoteSuffix = "]"
DataAdapter.UpdateCommand = DBcmd.GetUpdateCommand()
Try
OpenCon.Open()
DataAdapter.Fill(DS.Tables(strTable))
If DataAdapter.Update(DS.Tables(strTable)) > 0 Then
Return True
Else Return False
End If
Catch exo As Exception
MessageBox.Show(exo.Message)
Return False
End Try
End Using
End Using
End Function
Моя функция пытается обновить существующую таблицу Access с именем, представленным как strTable
, с информацией в таблице данных, dgDataTable
из таблицы данных. Каждый запуск достигает проверки обновления> 0 и возвращает false, что означает, что синтаксис должен работать (т. Е. Нет сообщений об ошибках). Я проследил таблицу, и в ней есть все необходимые данные (поэтому информация корректно передается из таблицы через команды обновления). Я играл с применением его в наборе данных, но я не уверен, что мне это действительно нужно.
Я отслеживал переменные с помощью метода обновления, и я думаю, что выяснил, почему он не будет обновляться, но я ' Я не уверен, что с этим делать. Этот запрос выглядит следующим образом:
UPDATE [RtoC] SET [R] = ?, [C] = ?, [Type] = ?, [Unknown] = ? WHERE (([R] = ?) AND ([C] = ?) AND ([Type] = ?) AND ((? = 1 AND [Unknown] IS NULL) OR ([Unknown] = ?)))
Имя таблицы доступа - Rto C с полями R, C, Type и unknown. Я думаю "?" не заполняются, в результате чего запрос просто не применяет данные обратно в Access. Однако я не уверен, как установить эти элементы.
РЕДАКТИРОВАТЬ 1/29/20: я использовал изменения кода I и документ jmcihinney ниже, и он вставляет строки в таблицу Access. Это изменение изменяет вопрос, чтобы он был более точным c о том, что я пытаюсь сделать, и как создается таблица данных. Надеюсь, это прояснит некоторые формулировки с моей стороны и послужит некоторой основой для изменения состояния строки.