ورود

View Full Version : سوال: ارسال ایمیل در اکسس از طریق Outlook



linktaz
سه شنبه 28 فروردین 1397, 14:48 عصر
با سلام
دوستان گرامی و عزیز.آیا امکان ارسال ایمیل در اکسس از طریق outlook وجود دارد؟
منظورم اینه که یه سری داده از طریق یک کوئری از تیبل ها استخراج بشن و از طریق زدن دکمه،اطلاعات به صفحه ی outlook منتقل شده و بتوانیم ارسال کنیم

mazoolagh
سه شنبه 28 فروردین 1397, 17:02 عصر
احتمالا این پرسش تکراری هست.

وقتی میشه مستقیم ارسال کرد چه نیازی هست که اول برنامه outlook باز بشه؟

linktaz
پنج شنبه 06 اردیبهشت 1397, 11:34 صبح
احتمالا این پرسش تکراری هست.

وقتی میشه مستقیم ارسال کرد چه نیازی هست که اول برنامه outlook باز بشه؟
بله ،قسمتیش تکراری بود.اما من میخوام یک سری رکورد های خاص ارسال بشه،نه یه متن ثابت یا اطلاعاتی که تابپ بشه.من یه کوئری دارم به نام q. میخوام وقتی دکمه ی ارسال رو زدم،اطلاعاتی که از طریق کوئری از بانک استخراج میشه ارسال بشه.

linktaz
پنج شنبه 06 اردیبهشت 1397, 11:45 صبح
فایل ضمیمه

mazoolagh
شنبه 08 اردیبهشت 1397, 09:10 صبح
بله ،قسمتیش تکراری بود.اما من میخوام یک سری رکورد های خاص ارسال بشه،نه یه متن ثابت یا اطلاعاتی که تابپ بشه.من یه کوئری دارم به نام q. میخوام وقتی دکمه ی ارسال رو زدم،اطلاعاتی که از طریق کوئری از بانک استخراج میشه ارسال بشه.

ساختار کد ارسال ایمیل معین هست و ارتباطی به اینکه اطلاعات از کجا میاد نداره.
این شما هستین که باید اطلاعات رو بهش معرفی کنین:
DIM RS AS RECORDSET
SET RS=CURRENTDB.OPENRECORDSET("SELECT ..... FROM ... WHERE ...")
DO WHILE NOT RS.EOF
With OutMail
.To = RS("...")
.CC = RS("...")
.BCC = ""
.Subject = RS("...")
.Body = "Please review." & vbCrLf & vbCrLf & ActiveWorkbook.FullName
.ReadReceiptRequested = True
.Display 'or .Send
End With
RS.MOVENEXT
LOOP

در ضمن با DOCMD.SENDOBJECT هم میتونین ایمیل بفرستین.

linktaz
شنبه 08 اردیبهشت 1397, 13:39 عصر
ساختار کد ارسال ایمیل معین هست و ارتباطی به اینکه اطلاعات از کجا میاد نداره.
این شما هستین که باید اطلاعات رو بهش معرفی کنین:
DIM RS AS RECORDSET
SET RS=CURRENTDB.OPENRECORDSET("SELECT ..... FROM ... WHERE ...")
DO WHILE NOT RS.EOF
With OutMail
.To = RS("...")
.CC = RS("...")
.BCC = ""
.Subject = RS("...")
.Body = "Please review." & vbCrLf & vbCrLf & ActiveWorkbook.FullName
.ReadReceiptRequested = True
.Display 'or .Send
End With
RS.MOVENEXT
LOOP

در ضمن با DOCMD.SENDOBJECT هم میتونین ایمیل بفرستین.
بله.اما در قسمت Body،که میخوام چیزی رو بفرستم هیچی قبول نمیکنه و فقط میشه یه متن ثابت نوشت.مشکل من اینه.اگر هم نمونه آپلود شده رو مشاهده فرمائید من میخوام یک کوئری اجرا بشه و اطلاعاتش ارسال بشه.اما نمیدونم چطور اینکار انجام میشه

linktaz
چهارشنبه 12 اردیبهشت 1397, 12:30 عصر
جناب mazoolagh منتظر راهنماییتون هستم

linktaz
پنج شنبه 13 اردیبهشت 1397, 13:46 عصر
اساتید گرامی
با سلام
با جستجوی فراوان در ایترنت تونستم این نمونه رو پیدا کنم که با شرایط درخواستی من مطابقت داره و نتیجه کوئری رو توی متن ایمیل میاره.(فایل پیوست رو واسه عزیزانی که نیاز دارند گذاشتم) فقط یه مشکلی برخوردم موقعی که ماژول رو به فایل خودم منتقل میکنم و کد ها رو روی دکمه ی خودم تعریف میکنم پیغام خطا میده.لازم به ذکره اصلا به کد ها دست نزدم.فقط جابجا کردم .علت این ارور چیه؟

148100

mazoolagh
یک شنبه 16 اردیبهشت 1397, 07:59 صبح
اما در قسمت Body،که میخوام چیزی رو بفرستم هیچی قبول نمیکنه و فقط میشه یه متن ثابت نوشت.مشکل من اینه.
خب این نشدنیه!
یعنی اینکه فقط مقدار ثابت بگیره.
قطعا عبارتی که برای BODY میفرستین اشکال داره.

در مورد خطایی که تصویرش رو گذاشتین؛
شما برای تعریف آبجکتهایی که ذاتی اکسس نیستن دو راه دارین :
1- رفرنس لازم رو معرفی کنین - قبل از اجرای کد باید انجام بشه
Dim OLA As Outlook.Application
Set OLA=Outlook.Application
Dim OLM As Outlook.MailItem
Set OLM=OLA.CreateItem(olMailItem)


2- از اکسس بخواین در هنگام اجرا اون آبجکت رو بسازه
Dim OLA As Object
Set OLA=CreateObject("Outlook.Application")
Dim OLM As Object
Set OLM=OLA.CreateItem(0)

در هر دو حالت لازمه که کمپوننت مورد نیاز روی سیستم نصب باشه

این خطا به این برمیگرده که کد براساس رفرنس دهی نوشته شده و لازمه شما در برنامه تون این رفرنس رو لحاظ کنین.
در این حالت رفرنس باید به برنامه OUTLOOK باشه.
148109
جالبه که در نمونه اولی که شما پیوست کرده بودین این رفرنس بود!

mazoolagh
یک شنبه 16 اردیبهشت 1397, 08:05 صبح
یک نمونه پیوست میکنم که هر دو روش در اون پیاده شده و بنابراین رفرنس به OUTLOOK هم داره

Public Function SendMail_1(ByVal xTO As String, _
Optional ByVal xCC As String = "", _
Optional ByVal xBCC As String = "", _
Optional ByVal xSUBJECT As String = "", _
Optional ByVal xBODY As String = "") As Boolean
On Error GoTo ErrorHandler
Dim OLA As outlook.Application
Set OLA = outlook.Application
Dim OLM As outlook.MailItem
Set OLM = OLA.CreateItem(olMailItem)
OLM.To = xTO
OLM.Subject = xSUBJECT
OLM.CC = xCC
OLM.BCC = xBCC
'OLM.BodyFormat = olFormatPlain
OLM.Body = xBODY
OLM.Send
SendMail_1 = True
Exit Function
ErrorHandler:
SendMail_1 = False
End Function


Public Function SendMail_2(ByVal xTO As String, _
Optional ByVal xCC As String = "", _
Optional ByVal xBCC As String = "", _
Optional ByVal xSUBJECT As String = "", _
Optional ByVal xBODY As String = "") As Boolean
On Error GoTo ErrorHandler
Dim OLA As Object
Set OLA = CreateObject("Outlook.Application")
Dim OLM As Object
Set OLM = OLA.CreateItem(0)
OLM.To = xTO
OLM.Subject = xSUBJECT
OLM.CC = xCC
OLM.BCC = xBCC
'OLM.BodyFormat = olFormatPlain
OLM.Body = xBODY
OLM.Send
SendMail_2 = True
Exit Function
ErrorHandler:
SendMail_2 = False
End Function


Public Function SendByID(ID As Long) As Boolean
On Error GoTo ErrorHandler
Dim RS As Recordset
Set RS = CurrentDb.OpenRecordset("SELECT * FROM MAIL WHERE ID=" & ID)
RS.Edit
Dim v As Variant
RS("SENT") = SendMail_2(RS("EMAIL"), , , RS("SUBJECT"), RS("BODY"))
RS("TIMESTAMP") = Now
RS.Update
RS.Close
Set RS = Nothing
SendByID = True
Exit Function
ErrorHandler:
SendByID = False
End Function

mazoolagh
یک شنبه 16 اردیبهشت 1397, 08:13 صبح
خب به سلامتی مدیریت پیوست فایل فعلا برای من کار نمیکنه!
تصویر دیتا نمونه رو میگذارم

148110

148111

linktaz
یک شنبه 16 اردیبهشت 1397, 12:27 عصر
بسیار عالی بود.متشکرم.مشکل حل شد.امیدوارم به کار دوستان هم بیاد.