0

我添加了一个屏幕,允许更改表 Connect 属性,以便用户可以更改数据库。

这是我更改的值:

ODBC;Description=####;DRIVER=SQL Server;SERVER=SERVER2008\MSSQLSERVER2008;UID=####
;PWD=####;APP=Microsoft Office 2010;DATABASE=####

这样做之后,这段代码:

With Me.Child5.Form.Recordset 'linked tabled
    .MoveFirst
    Do While Not .EOF
        .Edit
        !Allow = False
        !ReadOnly = False
        .Update
        .MoveNext
    Loop
End With

引发“错误'3027':无法更新。数据库或对象是只读的”。

我应该说,在更改 Connect 属性之前,就这段代码而言,一切正常。此外,即使更改了 Connect 属性,更改了绑定到其他表的其他表单中的信息,更改也会生效而不会引发错误,因此数据库显然不是只读的。

有任何想法吗?谢谢

编辑:我也在RefreshLink设置之后调用Connect,其他表中的更改实际上确实在新数据库中生效。

4

1 回答 1

0

您在 ODBC 连接字符串中提供给 SQL Server 的 UID 是只读 UID。您的 UID 是 db-owner UID,因此您可以进行编辑。

此外,如果在 SQL 语句中使用 JOIN 创建记录集,则几乎总是会阻止您编辑记录集。

于 2013-05-05T17:40:55.750 回答