Raporu PDF yapıp e-mail ile gönderme

08/02/2017, 23:56

m_demir

Merhaba Hocam.

Eklediğim uygulamada AnaMenu Formunda Firma ve Firma2 adında iki adet açılan kutu var bu açılan kutulardan seçtiğim müşteriye ait rapor alıyorum ve pdf olarak kayıt edebiliyorum. Benim istediğim müşteriyi seçip Rapor Al butonuna tıkladığımız zaman Satış ve Satış2 tablosundaki o muştriye ait e-posta adresi YazıcıSeçFirma ve YazıcıSeçFirma2 formudaki metin kutusunda görünsün. e-posta gönder adresine tıkladığımız zaman mail gönderilsin. Eğer oluyorsa e-postanın gidip gitmediğini uyarı olarak göstersin.  Bu konuda yardımlarınıza ihtiyacım var. Saygılarımla iyi çalışmalar.
09/02/2017, 09:57

ozanakkaya

Merhaba,

Firma isimli raporun Açıldığında olayındaki 

DoCmd.OpenForm "YaziciSecFirma", acNormal

Kodunu sil,

Raporun Ayrıntının Yazıldığında olayına aşağıdaki kodu ekle

DoCmd.OpenForm "YaziciSecFirma", acNormal
Forms!YaziciSecFirma![e-posta] = Dlookup ("[e-posta]", "Satis", "[FirmaAdi]='" & Me.FirmaAdi & "'")

YaziciSecFirma isimli formun Vba sayfasında en alta aşağıdaki kodu ekle

Function SendMail(BelgeAdi)
Dim iMsg, iConf, Flds, schema
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
Set Flds = iConf.Fields
schema = "http://schemas.microsoft.com/cdo/configuration/"
Flds.Item(schema & "sendusing") = 2
Flds.Item(schema & "smtpserver") = "smtp.gmail.com"
Flds.Item(schema & "smtpserverport") = 465
Flds.Item(schema & "smtpauthenticate") = 1
Flds.Item(schema & "sendusername") = "GondericiGmailAdresi"
Flds.Item(schema & "sendpassword") = "Gmailşifreniz"
Flds.Item(schema & "smtpusessl") = 1
Flds.Update
veri1 = txtEklenti
With iMsg
.To = Me.e_posta
.From = "Gönderen Adı Soyadı ( GondericiGmailAdresi )"
.Subject = "Deneme Konu"
.HTMLBody = "Deneme Metin"
.Sender = "xx"
.Organization = "GondericiGmailAdresi"
.ReplyTo = "GondericiGmailAdresi"

.AddAttachment BelgeAdi

Set .Configuration = iConf
.Send

End With

Set iMsg = Nothing
Set iConf = Nothing
Set Flds = Nothing

MsgBox ("mail gönderildi")
Kill BelgeAdi
End Function

Üstteki fonksiyonda GondericiGmailAdresi ve Gmailşifreniz kısımlarını gmail adres bilgilerinizi yazınız. Deneme Konu ve Deneme Metin Kısımlarını da kendinize göre düzenleyiniz.

Formdaki Komut24'ün tıklandığında olayına da aşağıdaki kodu ekle

Dim BelgeAdi As String
BelgeAdi = CurrentProject.Path & "\" & Format(Now(), "dd.mm.yyyy") & "V.S.Fat.M.B.Rap.pdf"
DoCmd.OutputTo acOutputReport, "Firma", acFormatPDF, BelgeAdi, False
Call SendMail(BelgeAdi)


Bu işlemleri yaptıktan sonra gmail adresinizle oturum açıp, https://www.google.com/settings/security/lesssecureapps bağlantısını açıp "Daha az güvenli uygulamalar için erişim" ayarını "Aç" olarak değiştirmeniz gerekli.
09/02/2017, 20:14

m_demir

Çok, çok teşekkürler Hocam ellerinize sağlık.

Hocam konuyu taşıyabilirsiniz. Saygılarımla iyi çalışmalar.
09/02/2017, 21:38

atoz112

sayın m_demir,

EK'te;
bahsettiğiniz talebinize yönelik olarak,
alternatif olması amacı ile eklemeye imkan bulunamaması nedeni ile geç konunuza dahil edilmek sureti ile hazırlanmış örnek uygulama mevcuttur.inceleyebilirsiniz.

bilginize...iyi çalışmalar,saygılar.
10/02/2017, 19:26

m_demir

Çok, çok teşekkürler Hocam ellerinize sağlık. Çok güzel olmuş.
25/05/2023, 11:14

hnakis

Sayın atoz112

sizin ve bir çok kişinin Access 2003 çalışmalarında kullandığınız;

DoCmd.OutputTo acOutputReport, "xxxxxxx", acFormatPDF

kodu çalışmıyor ama hep bu kullanılıyor. yani en azında benim çalışmamda çalışmıyor. Rapor kaydet penceresinden sonra çıkan çıktı biçim seç penceresindeki seçeneklerin hangisi seçilirse seçilsin kayıttan sonra dosya açılamıyor. pdf açılmıyor yani. sorunun nedenini çözemedim. yardımcı olunursa sevinirim.

saygılar