sql - 运行宏(特别是电子邮件)时如何更新字段(特别是日期)
问题描述
我正在使用默认访问模板(联系人)之一,并希望在任何时候单击联系人上的电子邮件按钮时捕获日期。这会运行一个调用该EMailDatabaseObject
操作的宏。我想添加一个可以运行查询的操作:
UPDATE CONTACTS SET lastemail = GetDate() WHERE ID=[ID];
我也不知道如何让它把 ID 字段放在那里。
解决方案
有很多不同的方法可以做你想做的事。我将为您列出三种不同的选择。
1.如果你真的想使用嵌入的宏,你可以这样做:
- 在表中添加字段
LastEmail
(日期)Contacts
。 - 将字段添加到表单
Contact Details
中。 - 在表单中设置新字段的属性
Visible = False
。 在嵌入的宏中,您可以添加一行来执行以下操作:
SetValue Item = [LastEmail] Expression = Now()
2.您可以使用代码和宏的组合:
- 您可以进入 VBA 编辑器 (
ALT+F11
)。 插入一个模块并粘贴以下函数:
Function updateEmailTime() CurrentDb.Execute "UPDATE CONTACTS SET lastemail = Now() WHERE ID=" & [Form_Contact List].[ID] End Function
编辑事件中的嵌入宏
OnClick
以包含一行RunCode
并使用您的新函数updateEmailTime
。
3.如果你想完全用代码来做,你可以用以下内容替换OnClick
电子邮件按钮事件中的嵌入宏[Event Procedure]
:
Private Sub cmdEmail_Click()
Dim objOutlook As Object
Dim objMail As Object
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
' Send the email
With objMail
.To = [Form_Contact List].E_mail_Address
.Subject = "This is the subject."
.Body = "This is the body."
.Display '(If you want to see the email and send it yourself)
'.Send '(If you want to send the email without seeing it)
End With
' Update the time.
CurrentDb.Execute "UPDATE CONTACTS SET lastemail = Now() WHERE ID=" & [Form_Contact List].[ID]
' Clean up the objects
Set objMail = Nothing
Set objOutlook = Nothing
End Sub
我倾向于使用代码而不是使用 Access 的宏生成器来做事。你会发现一切都变得容易了。确保在表中为所有替代项创建新字段。
推荐阅读
- python - 如何在 django 应用程序中获取用户实例
- javascript - Facebook 像素中 fbq() 函数的回调函数
- angular - Angular building prod 删除评论
- python - 当我输入错误的答案时,它会做正确的事情(我是初学者 python)
- reactjs - 在反应中访问复选框的简单方法。我有超过 20 个复选框
- angular - Leaflet + Ionic5 / Angular - 映射不良渲染 -
- ios - AVFragmentedAssetMinder 不能在 iPhone 设备上运行,但可以在模拟器上运行
- java - XMLEventWriter 抛出 javax.xml.stream.XMLStreamException: No open start element,当尝试写入结束元素时,即使打开
- xslt - 选择表亲 - 即前面和前面的兄弟姐妹的问题
- ruby-on-rails - 无法提交由 Rails Turbo Frame 响应绘制的表单