【问题标题】:Email Query Results in Access 2007Access 2007 中的电子邮件查询结果
【发布时间】:2014-06-02 00:46:54
【问题描述】:

早安,

我希望有人可以帮助我。在 VBA 编码方面我并没有过多的经验,并且有一些事情需要完成,老实说我不知道​​从哪里开始......我遇到了一些我可以使用的编码,如下所示

Dim strSQL
Dim db As DAO.Database
Dim MailList As DAO.Recordset
Dim MyOutlook As Outlook.Application
Dim MyMail As Outlook.MailItem
Dim Subjectline As String
Dim BodyFile As String
Dim fso As FileSystemObject
Dim MyBody As TextStream
Dim MyBodyText As String
Dim MyDecision As String
Dim strReportName As String
Dim strEnroll As String
Dim strWho As String
Dim strEmail As String

Set fso = New FileSystemObject
Set MyOutlook = New Outlook.Application
Set db = CurrentDb()
Set MailList = db.OpenRecordset("qryEmail")

Subjectline$ = "Expiration Date" & " " & Date

Set MyMail = MyOutlook.CreateItem(olMailItem)

Do While Not MailList.EOF
MyBodyText = MailList("")
MailList.MoveNext
Loop

MyMail.To = "" & ""
MyMail.CC = CurrentUser() & ""

MyMail.Subject = Subjectline$

MyMail.Body = MyBodyText
MyMail.Display

strEmail = Now()
strWho = CurrentUser()

Set MyMail = Nothing
Set MyOutlook = Nothing

查询称为 qryemail,这些是该查询中的表

ColID、ColDate、公司名称、地址、地址 1、县、镇、邮政编码

我会将这些表名放在上面的代码中的什么地方......

任何帮助将不胜感激

谢谢 艾玛

【问题讨论】:

  • 你想做什么?
  • 它是我们运输部门的收集/交付系统....
  • 如果您要进行早期绑定,请确保每个人都使用相同的对象库。如果您在 2010 年开发并且用户拥有 2003 年,它将出错(根据我的经验)。这是后期绑定的示例:stackoverflow.com/questions/19256504/… 只是一个建议,因为我遇到了这个问题。

标签: vba


【解决方案1】:

为了澄清,您尝试将查询结果通过电子邮件发送给许多人。正确的?如果是这样,您已经很接近了。

看看这段代码。它演示了从查询中获取值的方法。要使用,请将文本 <INSERT YOUR FIELD> 替换为查询中的字段名称。因此,如果您想要 Companyname,请将其替换为文本。

Do While Not MailList.EOF
  If MyBodyText = "" Then
    MyBodyText = MailList![<INSERT YOUR FIELD>]
  Else
    MyBodyText = MyBodyText & "," & MailList![<INSERT YOUR FIELD>]
  End If
  MailList.MoveNext
Loop

【讨论】:

    【解决方案2】:

    您需要遍历查询的字段名称(ColID、ColDate、Companyname、address、address1、county、town、postcode)并将它们全部连接到电子邮件的消息正文中。

    在邮件正文中实现以下所有目标:

    ColID:(一些值)
    ColDate:(一些值)
    公司:(一些价值)
    地址:(一些值)
    地址1:(一些值)
    县:(一些价值)
    城镇:(一些价值)
    邮政编码:(一些值)

    代码如下:

    MailList.MoveLast
    MailList.MoveFirst
    
    MyBodyText = ""
    
    Do While Not MailList.EOF
    MyBodyText = MyBodyText & "ColID: " & MailList!ColID & vbNewLine
    MyBodyText = MyBodyText & "ColDate: " & MailList!ColDate & vbNewLine
    MyBodyText = MyBodyText & "Company: " & MailList!CompanyName & vbNewLine
    MyBodyText = MyBodyText & "Address: " & MailList!address & vbNewLine
    MyBodyText = MyBodyText & "Address1: " & MailList!address1 & vbNewLine
    MyBodyText = MyBodyText & "County: " & MailList!county & vbNewLine
    MyBodyText = MyBodyText & "Town: " & MailList!town & vbNewLine
    MyBodyText = MyBodyText & "Postcode: " & MailList!postcode & vbNewLine
    
    MailList.MoveNext
    Loop
    

    请注意,这会遍历记录集 (qryEmail) 的所有记录。如果这不是您的意图,请考虑在 dbOpenRecordset 行中添加 where 子句,以过滤或限制输出到特定记录或少数记录。

    【讨论】:

      猜你喜欢
      • 2013-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-12
      • 2020-01-12
      • 2019-11-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多