2015-06-09 61 views
0

我有附加的查詢,它顯示了幾行(有更多的數據),但只有2個電子郵件地址。我想將相應的行發送到相關的電子郵件地址。所有這些細節每週都在變化,並且會有更多(有時候更少)電子郵件地址,所以我需要保留來自此表單的數據(而不是靜態地址)。我試着做出報告,並可以設法將其發送到電子郵件地址,但我爲此報告獲取了多個表單/電子郵件。查詢會顯示很多記錄,所以這不是一個可接受的解決方案。訪問查詢到電子郵件

任何幫助將感激地收到。

編輯 - 我附上了顯示數據的表格。我只想通過任何可能的方式向每個公司發送他們自己的幾行。請幫助:)

Table Layout

感謝。

Querydetails

我全碼:

Dim rS As DAO.Recordset 
Dim dbS As DAO.Database 
Dim Filepath As String 
Dim Folderpath As String 
Dim oOutlook As Outlook.Application 
Dim oEmailItem As MailItem 

Set dbS = CurrentDb() 
Set rS = dbS.OpenRecordset("Select DISTINCT email, [CompName], [MainContact] FROM q66NonConfirmedTimesheets") 
Do While Not rS.EOF 

myemail = rS!email 
mycompname = rS!CompName 
myMainContact = rS!MainContact 

'My Email the report 
Folderpath = "C:\Reports\" 
Folderpath = Folderpath & "WeeklyTimesheet, " & [mycompname] & " - " & Format(date, "dd mmm yyyy") & ".pdf" 

DoCmd.OpenReport "Rpt01UnconfirmedTimesheets", acViewPreview, , "email = '" & myemail & "'" 
    DoCmd.OutputTo acOutputReport, , "PDFFormat(*.pdf)", Folderpath, False 
    DoCmd.Close acReport, "Rpt01UnconfirmedTimesheets" 

If oOutlook Is Nothing Then 
    Set oOutlook = New Outlook.Application 
End If 
Set oEmailItem = oOutlook.CreateItem(olMailItem) 

With oEmailItem 
.to = [myemail] 
.Subject = "Unconfirmed Timesheets" 
.Body = "Automatic email from my database" 
.Attachments.Add Folderpath 
.Display 
End With 
'End of my emailing report 

rS.MoveNext 
Loop 
Set oEmailItem = Nothing 
Set oOutlook = Nothing 
Set rS = Nothing 
Set dbS = Nothing 

End Sub 

我已經加入到對我的報告 「的Onload」 事件:

Me.Filter = "[email]='" & myemail & "'" 
+0

您將不得不使用VBA,報告或表單通過電子郵件過濾每組'WorkhourID'(如果有意義的話)。 –

+0

我不認爲我已經解釋得很清楚。有比這裏顯示的數據更多的數據。每行都有日期,時間等請告訴我如何發送(在這種情況下)前7行到電子郵件地址[email protected]和其他5(在這種情況下)[email protected] –

+0

所以你的問題實際上是關於如何將數據作爲電子郵件發送,或者你有這樣的工作? –

回答

1

你需要打開VBA一個記錄包含不同的電子郵件地址。 循環訪問記錄集,打開報告,過濾電子郵件地址並通過電子郵件發送報告。空氣代碼:

Dim rS as DAO.Recordset 
Dim dbS as DAO.Database 
Set dbS = CurrentDb() 
Set rS = dbS.OpenRecordset("Select DISTINCT emailaddress FROM <yourquery>",DbOpenSnapshot) 
Do While Not rS.EOF 
<sometempvar> = rS!emailaddress 
'your code to email filtered report using <sometempvar>' 
rS.MoveNext 
Loop 
Set rS = Nothing 
Set dbS = Nothing 
+0

我試圖讓這個工作,但我需要一些更多的幫助。它在openRecordSet行失敗。我已經嘗試了所有我能想到的任何想法是我做錯了什麼? –

+0

我將我的完整代碼添加到原始問題 –

+0

我得到一個報告發送到這兩個電子郵件地址只需要過濾之前它創建報告 –

0

你需要創建一個查詢只返回電子郵件指定查詢只返回唯一值,查詢編輯器中有一個選項:

enter image description here