2015-06-09 2 views
0

У меня есть прикрепленный запрос, который показывает несколько строк (есть больше данных), но только 2 адреса электронной почты. Я хотел бы отправить соответствующие строки на соответствующий адрес электронной почты. Все эти данные меняются каждую неделю, и будет больше (а иногда и меньше) адресов электронной почты, поэтому мне нужно сохранить данные из этой формы (а не статические адреса). Я попытался сделать отчет и могу отправить его на адрес электронной почты, но я получаю несколько форм/сообщений для этого отчета. В запросе будет много записей, поэтому это не приемлемое решение.Запрос доступа к электронной почте

Любая помощь будет с благодарностью принята.

EDIT - Я прикрепил таблицы, которые показывают данные. Я просто хочу отправить каждой компании свои несколько строк любым возможным способом. Пожалуйста, помогите :)

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

Смежные вопросы