代码之家  ›  专栏  ›  技术社区  ›  Shadi

MS Access:使用完整日志表审核表,以跟踪表更改

  •  0
  • Shadi  · 技术社区  · 7 年前

    我在这个网站上找到了一些与五月号有关的帖子,但没有一个对我有帮助。所以 这不是复制品 .


    问题是:

    在我看来,这在一开始是一件非常容易的事情,但它变得复杂和非常具有挑战性。我对MS Access还很陌生,所以在苦苦挣扎了很多天后,我希望能在这里找到解决方案。

    假设我们有这样一个简单的表:

    enter image description here

    现在,我需要在记录级别上跟踪此表上的更改,并将更改记录在另一个表(例如日志表)中,如下所示:

    enter image description here

    其中track\u类型:

    1. 用于添加(插入)
    2. 用于编辑(更新)
    3. 用于删除

    更改学生表格上的记录时,应记录更改(添加/编辑/删除)。

    我的问题是我无法正确生成更改。

    我的表单 必须刷新 很多在日志表中产生过多条目,例如:

    enter image description here

    如您所见,插入一条记录需要两个日志,而不是一个日志。

    我在网上彻底搜索了一下,但找不到这种日志记录。我在字段级别找到了有关日志记录的信息,但这不是我想要的。我知道在大多数情况下可能会更好,但对我来说不是这样。

    因此,我将感谢任何指导信息/代码。

    发布了一个专注于该问题的最小化数据库 Here

    笔记:

    1. 只有当用户: -从表单上的当前记录移动。 -退出表单
    2. 即使这些更改已提交给学生表,在同一记录上也不应发生更改。
    3. 刷新是不可避免的。
    4. 如果在现场层面,审计跟踪没有帮助。
    5. 数据宏没有帮助,因为更改可以提交多次。
    6. 由于刷新方法,插入或更新前/后事件有问题。
    7. 非常感谢您使用所附数据库展示您的解决方案。
    8. 自定义导航按钮不是选项。
    1 回复  |  直到 7 年前
        1
  •  0
  •   Shadi    7 年前

    经过多次尝试,我想出了这个解决方案:

    创建与要跟踪的记录具有相同结构的自定义用户数据类型。

    类似于:

    Private Type Student_Record
       s-id
       s_Name
       s_age
    End Type
    
    Dim SR as Student_Record
    

    然后在这个SR记录而不是实际记录上进行所有验证。

    如果一切顺利,你就走。

    如果出现问题,请返回记录并要求用户更正。

    需要更多的编码,但它可以工作。

    感谢用户自定义类型。