Form açık değilse açıp raporu otomatik kapatma nasıl yapılır?

13/05/2009, 19:02

mehmeser

Merhaba,

Hazırladığım uygulamada sınıf listesi alırken parametreler frm_SinifListesi formunda verilmeli yoksa rapor hata mesajı veriyor.

Kullanımı kolaylaştırmak için rapora tıklandığında bu formu kontrol etmeli eğer açık değilse formu açmalı ve rapor kapatmalıyım.

Ben raporun açıldığında olayına şunları yazdım:
Kod:
'EĞER form açık değilse raporu kapat ve formu aç 13.05.2009 çarşamba
If SysCmd(acSysCmdGetObjectState, acForm, "frm_SinifListesi") <> 0 Then
'form açıktır
Else
MsgBox "Öncelikle sınıf ve şube seçimi yapmalısınız."
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "frm_SinifListesi"
DoCmd.OpenForm stDocName, , , stLinkCriteria
DoCmd.Close acReport, "rpr_SinifListesiResimli"
End If

Fakat rapor kendini kapatmıyor. Hata olarak ise olay anında bu komutu çalıştıramazsınız diyor.

DoCmd.Close acReport, "rpr_SinifListesiResimli" yerine Cancel = True yazınca rapor da kapandı. Eğer yaptığımda bir hata varsa veya daha iyi bir yöntem varsa bekliyorum.
13/05/2009, 19:37

okileturc

Ben ekteki modülü çok faydalı buluyorum
ve çok kullanıyorum

Kod:
Function IsLoaded(ByVal strFormName As String) As Boolean
' Returns True if the specified form is open in Form view or Datasheet view.
    Dim oAccessObject As AccessObject
    Set oAccessObject = CurrentProject.AllForms(strFormName)
    If oAccessObject.IsLoaded Then
        If oAccessObject.CurrentView <> acCurViewDesign Then
            IsLoaded = True
        End If
    End If
    End Function

Bu kodu, modüller bölümünde yeni kayıt açıp yapıştırın
ve kayıt edin

Sadece bu problemde değil artık nerede isterseniz açık form
kontrolü yaptıktan sonra eyleminizi gerçekleştirebilirsinz

If IsLoaded ( "kontrol_edilecekformadı" ) Then
Eylemi yap
Else
Vazgeç veya başka eylem yap
End If

Kolay gelsin
13/05/2009, 19:47

Bilgisayarcı

open da
cancel = true raporu kapatır.
Ayrıca isloaded fonksiyonu ile kontrol etmeniz daha kolay olacaktır. Nerdeyse standart bir fonksiyondur.