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 MSAccess将表单中的字段名引用到查询和电子邮件中_Ms Access_Vba_Ms Access 2010 - Fatal编程技术网

Ms access MSAccess将表单中的字段名引用到查询和电子邮件中

Ms access MSAccess将表单中的字段名引用到查询和电子邮件中,ms-access,vba,ms-access-2010,Ms Access,Vba,Ms Access 2010,我有一个表“emailtocustomer”,表中有3个字段,一个ID、type_ID(与types表中的typeid的关系(数字1-6))、Subject(键入文本)和Body(键入备注),这样我或其他用户可以在需要时轻松更改文本或主题。此表引用了发送给客户的电子邮件 预期的设计是,应用程序的用户将使用客户的电子邮件、联系人姓名和公司名称生成参考编号(在本例中为RMA票证编号),并单击生成RMA编号的表单上的按钮,以生成一封电子邮件,告知客户如何退回其产品 Access然后将信息转储到电子邮件

我有一个表“emailtocustomer”,表中有3个字段,一个ID、type_ID(与types表中的typeid的关系(数字1-6))、Subject(键入文本)和Body(键入备注),这样我或其他用户可以在需要时轻松更改文本或主题。此表引用了发送给客户的电子邮件

预期的设计是,应用程序的用户将使用客户的电子邮件、联系人姓名和公司名称生成参考编号(在本例中为RMA票证编号),并单击生成RMA编号的表单上的按钮,以生成一封电子邮件,告知客户如何退回其产品

Access然后将信息转储到电子邮件窗口。我在按钮的“OnClick”中有以下VBA代码来生成电子邮件:

' Generate Email to customer
Dim EmailTo, Subject, EmailBody, strSQL As String
Dim RMAType As Integer
Dim olApp As Object
Dim objMail As Object
Dim rs As DAO.Recordset
Dim db As Database

If IsNull(Me.contactemail) Then
    MsgBox "You cannot generate an email for this RMA - there is no email address!"
    Exit Sub
End If
Set olApp = CreateObject("Outlook.Application")
Set objMail = olApp.CreateItem(0)

EmailTo = Me.contactemail

RMAType = Me.type

Set db = CurrentDb

strSQL = "SELECT * FROM emailtocustomer WHERE type_id = " & RMAType & ""

Set rs = db.OpenRecordset(strSQL)

Subject = rs!email_subject
EmailBody = rs!EmailBody

With objMail
    '.BodyFormat = olFormatHTML
    .To = EmailTo
    .Subject = Subject
    .HTMLBody = EmailBody
    .Display
End With

Set rs = Nothing
Set db = Nothing
在表格上,用户选择RMA的“类型”,这是生成RMA的原因,一个单位数的ID号(me.type)。用户还填写联系人姓名(me.contactfirst)、联系人电子邮件(me.contactemail),应用程序生成RMA号码(me.rmanbr)

emailtocustomer.emailbody包含要发送的电子邮件的正文。我需要的It和emailtocustomer.email_主题字段包含对“新RMA”表单中“contactfirst”、“companyname”和“RMABR”字段的引用

以下是从emailtocustomer表中摘录的示例:

电子邮件主题:

RMA Information for RMA# R" & forms![New RMA]![rmanbr] & "
电子邮件正文:

<html>
<head><body style='font-family: tahoma'></head>
<body>Hello " & forms![New RMA]![contactfirst] & ",<br /><br />
Thank you for requesting an RMA from us. For quick and 
consistent communications regarding this RMA, please reply directly to 
this email, and leave the subject line intact.<br /><br />
Your RMA Number is R" & forms![New RMA]![rmanbr] & ". This RMA number should 
be <u>marked on the outside of your package(s)</u>. Packages received 
without an RMA number may be returned to the sender at their expense.<br />
<br />

您好“&forms![New RMA]![contactfirst]&”,

感谢您向我们请求军事革命。快速和 关于此RMA的一致通信,请直接回复 请删除此电子邮件,并保持主题行不变。

您的RMA编号为R“&forms![New RMA]![RMABR]&”。此RMA编号应为 在您的包裹外面进行标记。收到的包裹 如果没有RMA编号,则可能会将其费用退还给发件人。

在占位符
“&forms![New RMA]![contactfirst]&”
中,我需要适当的字段以结转至此电子邮件文本中。有没有办法做到这一点?我试过用“我”这个称呼,但似乎也不行


感谢所有帮助。

考虑在表的EmailBody字段中使用占位符
%…%
。注:百分比不表示任何内容,可以使用任何其他标记、特殊字符,也可以完全不使用


您好%ContactFirst%,

感谢您向我们请求军事革命。快速和 关于此RMA的一致通信,请直接回复 请删除此电子邮件,并保持主题行不变。

您的RMA编号为R%R%br%。此RMA编号应为 在您的包裹外面进行标记。收到的包裹 如果没有RMA编号,则可能会将其费用退还给发件人。

然后,在开发电子邮件时,使用
replace
将占位符替换为表单值:

。。。
Subject=“RMA的RMA信息#R”&表格![新军事革命]![br]
EmailBody=替换(rs!EmailBody,“%ContactFirst%”,表单![New RMA]![ContactFirst])
EmailBody=替换(rs!EmailBody,“%RMAnbr%”,表单![新RMA]![RMAnbr])
用objMail
'.BodyFormat=olFormatHTML
.To=通过电子邮件发送至
.主语
.HTMLBody=EmailBody
.展示
以
...

考虑在表中的EmailBody字段中使用占位符
%…%
。注:百分比不表示任何内容,可以使用任何其他标记、特殊字符,也可以完全不使用


您好%ContactFirst%,

感谢您向我们请求军事革命。快速和 关于此RMA的一致通信,请直接回复 请删除此电子邮件,并保持主题行不变。

您的RMA编号为R%R%br%。此RMA编号应为 在您的包裹外面进行标记。收到的包裹 如果没有RMA编号,则可能会将其费用退还给发件人。

然后,在开发电子邮件时,使用
replace
将占位符替换为表单值:

。。。
Subject=“RMA的RMA信息#R”&表格![新军事革命]![br]
EmailBody=替换(rs!EmailBody,“%ContactFirst%”,表单![New RMA]![ContactFirst])
EmailBody=替换(rs!EmailBody,“%RMAnbr%”,表单![新RMA]![RMAnbr])
用objMail
'.BodyFormat=olFormatHTML
.To=通过电子邮件发送至
.主语
.HTMLBody=EmailBody
.展示
以
...

不起作用,因为对表单控件的引用只是一个字符串。尝试一些无意义的字符串来代替表单/控件引用,比如zzz。然后在VBA代码中对字符串执行Replace()操作:

更换(strBody,“zzzzzzz”,Me.contactfirst)


好吧,伟大的头脑。。。在我写作时发布的冻糕。

不起作用,因为对表单控件的引用只是一个字符串。尝试一些无意义的字符串来代替表单/控件引用,比如zzz。然后在VBA代码中对字符串执行Replace()操作:

更换(strBody,“zzzzzzz”,Me.contactfirst)

好吧,伟大的头脑。。。我作曲时贴的冻糕