Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 类模块来触发和处理现场事件&;记录事件_Ms Access_Vba - Fatal编程技术网

Ms access 类模块来触发和处理现场事件&;记录事件

Ms access 类模块来触发和处理现场事件&;记录事件,ms-access,vba,Ms Access,Vba,我正在为我们公司制作一个数据库。他们希望这个数据库做的一件大事是根据更改的字段和新创建的记录创建提醒和电子邮件。例如,当用户在First_Meeting字段中输入日期时,应触发一个事件,该事件将在Outlook日历上创建3个提醒。第二个示例是,在合同表中创建新记录时,应触发一个事件以在Outlook日历中创建两个提醒和两个Outlook电子邮件 我有逻辑去做这一切,但我正试图找出处理这些事件的最佳方式。无论第一次会议字段以何种形式更新,触发都必须发生,这一点很重要。如果执行表单字段事件,则必须确

我正在为我们公司制作一个数据库。他们希望这个数据库做的一件大事是根据更改的字段和新创建的记录创建提醒和电子邮件。例如,当用户在First_Meeting字段中输入日期时,应触发一个事件,该事件将在Outlook日历上创建3个提醒。第二个示例是,在合同表中创建新记录时,应触发一个事件以在Outlook日历中创建两个提醒和两个Outlook电子邮件

我有逻辑去做这一切,但我正试图找出处理这些事件的最佳方式。无论第一次会议字段以何种形式更新,触发都必须发生,这一点很重要。如果执行表单字段事件,则必须确保将代码添加到包含该字段的所有表单中。我想知道是否有一种方法可以通过类模块实现这一点,这样我就可以在表字段或记录上触发事件。我没有做过任何OO,但几年前就研究过它,所以我对它的工作原理有一个非常模糊的理解。很抱歉,我的问题有点不具体,但我不想花太多时间在OO&Class模块的学习曲线上,结果发现我正在尝试做的事情无法完成。另一方面,如果我能在一个地方完成所有这些,并且不必担心它的未来,那将是非常值得花费任何时间的

我的问题是:我是否可以在表字段上创建一个类,以便在编辑该字段时触发事件?我可以在一个表(或表记录)上创建一个类,当有记录插入到表中时,该类就会触发吗?实现这一目标的逻辑是什么

我使用一个表来保存将根据更新的字段或创建的记录创建的所有项

我正在使用Access 2016。提前谢谢你能给我的任何帮助!!! 金姆

这是我当前用于第一次会议活动的事件代码:

'此代码调用一个表单来选择要创建的提醒
私人小组第一次会议后更新()
作为字符串的Dim strSql
作为字符串的Dim strWhere
将strOrderBy变暗为字符串
Dim intRecordCount为整数
'在选择要设置的约会之前保存对数据的任何更改
如果是我,那就脏了
我,肮脏=虚假
如果结束
'此处不包括“Where”关键字,因此可以将其用于DCount函数
strWhere=“[Appt Defaults].[Field Name]=“第一次会议日期”
strOrderBy=“订单依据[应用默认值]。[列表订单],[应用默认值子项]。[日期偏移量]”
strSql=“选择Count([Appt Defaults Child].ID)作为CountOfID”&_
“从[Appt Defaults]上的[Appt Defaults]内部联接[Appt Defaults Child]。ID=[Appt Defaults Child]。提醒ID”
intRecordCount=DCount(“提醒ID”、“qDefaultAppts”、strWhere)
如果intRecordCount>0,则
DoCmd.SetWarnings错误
'从临时表中删除记录
DoCmd.RunSQL“从TempApptToSelect删除*
'添加要在查询中使用的“Where”关键字
strWhere=“Where”&strWhere
strSql=CurrentDb.querydfs(“[qAddApptsToTemp MinusCriteria]”)。SQL
“The”;“符号添加到查询的末尾,因此需要去掉它
strSql=Replace(strSql,“;”,“”)
strSql=strSql&strWhere&strOrderBy
DoCmd.RunSQL strSql
'将临时表中的所有事件标记为选中
DoCmd.RunSQL“更新TempApptToSelect集TempApptToSelect.IsSelected=-1”
DoCmd.SetWarnings True
DoCmd.OpenForm“提醒-选择主”、、OpenArgs:=Me.Name
如果结束
端接头
'此代码来自选择提醒的表单

Private-Sub-cmdcreatemembers\u-Click()
'此例程从Appt Defaults表复制所有选定的默认记录,并将它们复制到提醒表中
'
Dim RStreminder默认为记录集
将RStreminder变暗为记录集
作为整数的Dim nID
Dim dtStartDate As Date
Dim dtStartTime作为日期
Dim dtEndTime As Date
作为字符串的Dim strProjectName
Dim strProjectAddress作为字符串
模糊的跗骨如线
Dim I以整数形式计数
'呼叫表单具有设置提醒值所需的信息
“FRMCalendarMinders”表格是通用表格,将出现在所有需要设置提醒的表格上
txtCallingForm=Me.OpenArgs()
'表单记录集是从确定记录筛选器的调用例程创建的临时查询
设置rstReminders=Forms(txtCallingForm)!FRMCalendarMinders.Form.RecordsetClone
Set rstReminderDefaults=CurrentDb.OpenRecordset(“qApptsToSet”)
nID=表单(txtCallingForm)!身份证件
StraptArea=左侧(RStreminderDefault![Appt Area],8)
选择病例-睑板
案例“项目”
strProjectName=Forms(txtCallingForm)!txtProjectName
strProjectAddress=Forms(txtCallingForm)!txtProjectAddressLine&vbCrLf&Forms(txtCallingForm)!txtProjectCityLine
使用rstreminder默认值
做而不做
'如果尚未创建此提醒
如果DCount(“ID”、“PR_儿童提醒”、“[Project ID]=”和Forms(txtCallingForm)![ID]&”和[MemberChildId]=”&![MemberChildId])=0,则
rstReminders.AddNew
'使用默认值初始化字段
特雷明德斯![提醒儿童]=![提醒儿童]
特雷明德斯![项目ID]=nID
特雷明德斯![提醒类型]=![Outlook项目类型]
特雷明德斯![提醒主题]=![主题]
特雷明德斯![提醒文字]=![正文]
特雷明德斯![受邀]=![邀请]
特雷明德斯![电邮抄送]=![电邮抄送]
特雷明德斯!日历=!日历ID
特雷明德斯!颜色=!彩色
选择案例![应用类型]
.
.
案例“第一次会议”
如果不为null(Forms(txtCallingForm)!dtFirstMeeting),则