使用Access VBA编辑共享点列表

时间:2020-02-28 23:32:30

标签: vba ms-access sharepoint sharepoint-list

我创建了一个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 :(得分:0)

因此,答案是使用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是包含SqlClass中SQL语句代码的字符串。

希望这对其他人有帮助。