链表只读

时间:2013-10-07 19:03:03

标签: ms-access permissions ms-access-2007 linked-tables

我有一个关于住房项目的访问2003(mdb)数据库,我每季度为我们当地的规划办公室更新。我们办公室的其他人可以从看到相同的数据中受益。我认为最简单的方法是给它们一个单独的访问数据库(无论是版本2003还是2007),从它链接到我更新的源表。但是,为了防止它们在查看时无意中更改源数据,我想使链接表只读。

有关如何限制Access 2007的链接表的访问权限的任何提示?

1 个答案:

答案 0 :(得分:4)

您可以将db文件存储在其他用户具有只读权限的共享文件夹中。然后他们仍然可以查看但不能更改链接表中的数据。

如果该建议不满意,您可以使用查询将其限制为只读访问权限。在为用户提供的数据库中,不要包含指向其他数据库中源表的链接。而是以FROM TableName IN '[path to db file]'

的形式为他们提供查询,以查找没有链接的源表

这是一个经过测试的例子:

SELECT
    u.UserID,
    u.FName,
    u.LName,
    u.AccessLevelID
FROM tblUser AS u IN 'C:\share\Access\loginexample.mdb';

但是,该查询结果仍然可以编辑。您可以使用字段表达式将列值设置为只读,而不是实际的字段值。

SELECT
    u.UserID + 0 AS UserID,
    u.FName + '' AS FName,
    u.LName + '' AS LName,
    u.AccessLevelID + 0 AS AccessLevelID
FROM tblUser AS u IN 'C:\share\Access\loginexample.mdb';

这些是简单的转换,使值只读。但您可以根据需要使用其他技术。例如,如果表格包含日期/时间字段,则可以使用CStr()Format()

CStr(date_field) AS date_field_as_text
Format(date_field, 'yyyy-mm-dd hh:nn:ss ampm') AS date_field_as_text

注意我使用了与字段名称不同的别名和这些函数。在某些情况下,当您尝试重新使用字段名称作为别名时,Access会抱怨“递归别名”。但是,只需在查询设计器中测试您的别名选项,以快速找出哪些是可以接受的。