Msgbox Tamam Tıklayınca Form Kapansın

07/06/2017, 13:25

bentürk

Merhaba,

Tbl_menu'ye bağlı Frm_menu adında formum var. Bu formun üzerindeki komut düğmesi ile frm_deneme adlı formu açıyorum. Frm_menu formunun üzerindeki adı alanındaki veriyi frm_deneme formunun Caption na yazıyıyor. Eğer Frm_menu adındaki formun adı alanı boşsa Caption na "Boş" yazıyor. Sorum eğer frm_Deneme adlı formun Caption'u "Boş" ise msgbox tamam tıklayınca frm_deneme adlı form kapatılsın. Bunun için bir kod yazmaya çalıştım hata veriyor. Bu konuda yardımlarınızı rica ediyorum.
Saygılarımla.

frm_deneme formunun kodları
Kod:
Private Sub Form_Current()
On Error Resume Next
   
Me.Caption = Nz(DLookup("adı", "tbl_Menu", "ID=" & Nz(Me.ID.Value, 0)), "Boş")
   If Me.Caption = "Boş" Then

  If MsgBox("kayıt yok, form kapatılacak", vbApplicationModal) = vbOK Then
Me.Caption = "Boş"

   DoCmd.Close
   End If
  End If
End Sub
07/06/2017, 15:06

alpeki99

Örneğinize çok detaylı bakamadım ama sorun hata mesajında belirttiği gibi formunuz ile ilgili işlemler daha bitmediğinden hata alıyorsunuz. Belki daha iyi bir yol vardır ancak benim aklıma ilk gelen Timer kullanmak oldu nedense. Şu şekilde çözüm üretebilirsiniz.

frm_Deneme isimli formun özelliklerinden Süreölçer Aralığını 100 yapın. Daha sonra yine frm_Deneme özelliklerinden Zaman Dolduğunda olayına bir kod yazın. kod şu şekilde olacak:


Private Sub Form_Timer()

   If (mesajVerildimi = False) Then
       
       Me.Caption = Nz(DLookup("adı", "tbl_Menu", "ID=" & Nz(Me.ID.Value, 0)), "Boş")
       
       If Me.Caption = "Boş" Then
   
           If MsgBox("kayıt yok, form kapatılacak", vbApplicationModal) = vbOK Then
           
               Me.Caption = "Boş"
               mesajVerildimi = True
               
           End If
           
      End If
     
   Else
   
       DoCmd.Close acForm, "frm_Deneme"
   
   End If
   
End Sub


Bu arada frm_Deneme formunun Geçerli Olduğunda olayındaki tüm kodları silmeniz lazım. Ayrıca form genelinde geçerli olması için bir değişken tanımlamalısınız. Şu şekilde olacak:


Dim mesajVerildimi As Boolean


bu değişkeni hemen satırların altına ekleyebilirsiniz:


Option Compare Database
Option Explicit

artık istediğiniz gibi bir sonuç elde edebilirsiniz.
07/06/2017, 15:27

bentürk

Merhaba,
Sn. alpeki99 hocam, işlem tamam istediğim işlemi yaptı. Elinize sağlık çok teşekkürederim.
Saygılarımla.