ACCESS FORMUNUN TİMER EVENTİNE HER dakikada bir çalışacak şekilde kodlar yazdım, access ve bahsettiğim form bir sunucu üzerinde sürekli açık bu kodlar outlook aracılığı ile mail gönderiyor. sistem sorunsuz çalışıyor, dk da bir çalışmasında sorun yok, mail atmasında sorun yok.ama sorunum bu accessin kurlu olduğu sunucunun memory kullanımının sürekli artması ve yaklaşık 1 gün sonra memory kullanımının %100 olmasından dolayı kilitlenmesi. bunu nasıl engelleyebilriim. kullandığım kodlar aşağıdadır.
Option Compare Database
Sub MAILTRG1_A()
DoCmd.OpenQuery "MAILTRG1_01", acViewNormal, acAdd
'DoCmd.OpenQuery "MAILTRG2_01", acViewNormal, acAdd
End Sub
'süreci sevkedildi olan faturaların satınalmacıya mail gönderimi
Sub MAILTRG3_B(Optional AttachmentPath)
On Error GoTo HATA
Dim MyDB As Database
Dim MyRS As Recordset
' Dim MYRScc As Recordset
Dim objOutlook As Outlook.Application
Dim objOutlookMsg As Outlook.MailItem
Dim objOutlookRecip As Outlook.Recipient
Dim objOutlookAttach As Outlook.Attachment
Dim SIPARISID As Integer
Dim upd As String
Set MyDB = CurrentDb
Set MyRS = MyDB.OpenRecordset("MAILTRG3_01")
'Set MYRScc = MyDB.OpenRecordset("A01_TRG01CC")
If MyRS.EOF And MyRS.BOF Then
Exit Sub
Else
MyRS.MoveFirst
Set objOutlook = CreateObject("Outlook.Application")
Do Until MyRS.EOF
Set objOutlookMsg = objOutlook.CreateItem(olMailItem)
With objOutlookMsg
Set objOutlookRecip = .Recipients.Add(MyRS![EMAIL])
' If Not (MYRScc.EOF And MYRScc.BOF) Then
' MYRScc.MoveFirst
' Do Until MYRScc.EOF
' If MYRScc![STATU] = MyRS![STATU] Then
' Set objOutlookRecip = .Recipients.Add(MYRScc![EMAIL])
' MYRScc.MoveNext
' Else
' MYRScc.MoveNext
' End If
objOutlookRecip.Type = olTo
.SUBJECT = "Sisteme Yeni Siparişiniz Eklendi"
.HTMLBODY = "Aşağıda detayı verilen sipariş yöneticiniz tarafından size atanmıştır." _
& "<br />" _
& "<br /><strong>" & "STF No : </strong>" & MyRS![STFNO] _
& "<br /><strong>" & "Sipariş ID : </strong>" & MyRS![SIPARISID] _
& "<br /><strong>" & "STF Tarihi : </strong>" & MyRS![STFTAR] _
& "<br />" _
& "<br /><strong>" & "Ülke ve Şantiye : </strong>" & MyRS![ULKE] & " - " & MyRS![SANTIYE] _
& "<br /><strong>" & "Şehir : </strong>" & MyRS![SEHIR] _
& "<br /><strong>" & "Termin : </strong>" & MyRS![TERMIN] _
& "<br /><strong>" & "Sipariş Veren : </strong>" & MyRS![SIPVERENAD] _
& "<br /><strong>" & "Malzeme Tanımı : </strong>" & MyRS![MLZTANIM] _
& "<br /><strong>" & "Sipariş Durum Açıklaması : </strong>" & MyRS![SIPDURUMA] _
& "<br /><strong>" & "Önemli Not : </strong>" & MyRS![ONEMLINOT] _
& "<br />"
If Not IsMissing(AttachmentPath) Then
Set objOutlookAttach = .Attachments.Add(AttachmentPath)
End If
For Each objOutlookRecip In .Recipients
objOutlookRecip.Resolve
If Not objOutlookRecip.Resolve Then
Exit Sub
End If
Next
.Send
End With
SIPARISID = MyRS![SIPARISID]
upd = "UPDATE SIPARIS_YEREL SET SIPARIS_YEREL.MAILT1= 'A' WHERE ((SIPARIS_YEREL.SIPARISID) = " & SIPARISID & ");"
DoCmd.RunSQL upd
MyRS.MoveNext
Loop
Set objOutlookMsg = Nothing
Set objOutlook = Nothing
End If
Exit Sub
HATA:
error_no = Err.Number
Call ERRORMAIL
End Sub
Sub ERRORMAIL()
Dim objOutlook As Outlook.Application
Dim objOutlookMsg As Outlook.MailItem
Dim objOutlookRecip As Outlook.Recipient
Dim adminmail As String
'Dim error_tx As String
Set objOutlook = CreateObject("Outlook.Application")
Set objOutlookMsg = objOutlook.CreateItem(olMailItem)
With objOutlookMsg
adminmail = """"""
'If IsNull(DLookup("[ErrorString]", "ERROR", ErrorCode = error_no)) = False Then
'error_tx = DLookup("[ErrorString]", "ERROR", ErrorCode = error_no)
'End If
'Debug.Print error_tx
Set objOutlookRecip = .Recipients.Add(adminmail)
objOutlookRecip.Type = olTo
.SUBJECT = "Satınalma Operasyon Takip sistemi hata bildirimi" & error_no
.HTMLBODY = "Satınalma Operasyon Takip sisteminde hata oluştu : " & error_no
.Send
End With
Set objOutlook = Nothing
Set objOutlookMsg = Nothing
error_no = """"
End Sub
timer formuda şöyle:
Private Sub Form_Timer()
'Dim rs01 As New ADODB.Recordset
'sayacx = sayacx + 1
'sayac = Time
saat = Time
'sn = Format(Time, "ss")
If Format(Time, "ss") = 30 Then
Call MAILTRG1_A 'personeli girilen yeni siparişleri ve yeni faturaları yerel tabloya ekle
'Call MAILTRG1_B 'personeli tanımlanan siparişin sipariş verene mail gönderimi
'Call MAILTRG2_B 'süreci sevkedildi olan faturaların satınalmacıya mail gönderimi
Call MAILTRG3_B 'satınalmacısı atanan siparişlerin mail gönderimi
End If
End Sub