Редактировать список Sharepoint с помощью Access VBA - PullRequest
0 голосов
/ 29 февраля 2020

Я создал список Sharepoint, а затем импортировал этот список в Access. Я только создал UserName, FirstName, LastName, LastLogIn и LastVersion. Но, похоже, есть еще несколько столбцов, которые по умолчанию входят с Sharepoint.

Я могу открыть этот связанный список и добавить новые записи в режиме просмотра таблицы. Они также появляются в Sharepoint. enter image description here enter image description here

Моя проблема в том, что когда я пытаюсь редактировать строку с помощью VBA, я получаю сообщение об ошибке, что она доступна только для чтения.

100     Dim sql As String
110     sql = "SELECT " & _
                  "* " & _
              "FROM " & _
                  "tblUsers " & _
                  "INNER JOIN " & _
                  "tblSettings " & _
                  "ON " & _
                  "tblUsers.UserName = tblSettings.UserName "

120     Set rst = CurrentDb.OpenRecordset(sql)
130     rst.MoveFirst
140     rst.Edit
150     rst.Fields("LastLogIn") = Now
160     rst.Fields("LastVersion") = version
170     rst.Update
180     rst.Close

К вашему сведению: этот простой код сообщает мне, когда последний раз они входили в систему и какую версию интерфейса они использовали в последний раз.

Я получаю следующую ошибку

3027: не удается обновить. База данных или объект доступны только для чтения.

Этот код прекрасно работал, когда таблица была связанной таблицей из другого файла Access. Но теперь, когда я пытаюсь переместить серверную часть в список Sharepoint, кажется, что VBA может только читать. Есть идеи?

Заранее спасибо.

1 Ответ

0 голосов
/ 03 марта 2020

Получается, что ответом было использование оператора SQL для обновления таблицы.

Вот мой код.

100     Dim sql As New sqlClass
110     With sql
120         .Add "UPDATE"
130         .Add "    tblSettings"
140         .Add "    INNER JOIN"
150         .Add "    tblUsers"
160         .Add "    ON"
170         .Add "    tblSettings.UserName = tblUsers.UserName"
180         .Add "SET"
190         .Add "    tblUsers.LastLogin = #" & Now & "#,"
200         .Add "    tblUsers.LastVersion = """ & version & """"
210         .Execute
220     End With

Очевидно, у меня есть собственный класс в там, но в основном SqlClass содержит оператор и имеет внутри него функцию, которая выполняет это:

CurrentDb.Execute Me.Code, dbFailOnError

Me.Code - строка, содержащая код оператора SQL в SqlClass.

Надеюсь, это поможет кому-то еще.

...