MS Access事件驱动的数据宏来更新表(示例)

SAM*_*776 1 ms-access ms-access-2010 ms-access-2013 ms-access-data-macro

我已经将一些数据从Excel导入到Access中。现在,我想编写类似于触发器的代码,每当我从Excel中获取新数据时,该代码就会更新另一个表。

我知道我无法在Access中编写触发器,因此我正在尝试使用数据宏。谁能为我提供有关如何使用数据宏执行此操作的帮助?

Gor*_*son 5

假设您有一个名为[Events]的表,并且要从Excel导入数据并将其附加到表中

ID  EventName              EventType           EventDate 
--  ---------------------  ------------------  ----------
 1  New Staff Orientation  Training: in-house  2013-06-07
 2  TGIF barbecue lunch    Social              2013-06-14
Run Code Online (Sandbox Code Playgroud)

假设您还有一个名为[EventTypes]的表,以跟踪可以分配给事件的类别。需要批准来自Excel数据的[EventType]值,以避免不必要的重复,错别字等。您的[EventTypes]表如下所示

EventType           Added                Approved
------------------  -------------------  -------------------
Training: in-house  2013-06-01 09:15:33  2013-06-01 09:37:16
Social              2013-06-07 10:01:23  2013-06-07 10:22:00
Run Code Online (Sandbox Code Playgroud)

您可以在[事件]表上创建“插入后”数据宏,以将新的[EventType]值插入到[EventTypes]表中,如下所示:

    SetLocalVar
            名称NotFound
            表达式= True

    在条件= [EventTypes]。[EventType] = [Events]。[EventType]的EventTypes中查找记录
            

        SetLocalVar
                名称未找到
                表达式= False

    如果   [未找到]  

        在EventTypes中创建记录

            SetField
                    名称EventTypes.EventType
                    值= [事件]。[EventType]

            SetField
                    名称EventTypes.Added
                    值= Now()

    万一

现在,如果您导入具有新EventType的事件...

ID  EventName              EventType           EventDate 
--  ---------------------  ------------------  ----------
 1  New Staff Orientation  Training: in-house  2013-06-07
 2  TGIF barbecue lunch    Social              2013-06-14
 3  Bathtub races          Team Building       2013-06-15
Run Code Online (Sandbox Code Playgroud)

...数据宏将自动将其添加到EventTypes表中

EventType           Added                Approved
------------------  -------------------  -------------------
Training: in-house  2013-06-01 09:15:33  2013-06-01 09:37:16
Social              2013-06-07 10:01:23  2013-06-07 10:22:00
Team Building       2013-06-11 08:38:37          
Run Code Online (Sandbox Code Playgroud)