Formdan diğer form açıldığında bilgilerin gelmemesi

1 2
16/09/2015, 18:03

yenginoglu

Sayın Hocalarım ,
Anaformdan siparişler bekleyenler formunu açtığımızda herhangi bir siparişin iş emri tıklandığında bilgiler gelmiyor. anaform açılmadan direk frm_SIPARIS_BEKLEYENLER formu açıldığında bilgiler geliyor.
Hatamı çok aradım bulamadım yardımcı olursanız sevinirim.

Saygılarımla,
 
16/09/2015, 21:04

atoz112

Sayın yenginoglu,

Bahsettiğiniz talebinize yönelik olarak aşağıdaki açıklamanın yapılması uygun görülmüştür.

Eğer bir forumun içerisinde yer alan bir alt formdaki herhangi bir denetimden veri almak ya da o denetimdeki veri değerine göre bir kriter belirlemek istiyorsanız,bunun için;direkt o alt formun denetim değerini kriteri için kullanmayınız.böyle bir yazım hata verir.

ÖRNEK:
FORM1 adlı bir formun içerisinde FORM2 adlı bir alt form ve bu alt formun da içerisinde ID denetimi olsun.bu değerin kullanılarak bir kriter oluşturulmak istendiğinde ve bu kritere göre bir başka form açılmak istendiğinde,yazılacak kod ifadesi:
Kod:
DoCmd.OpenForm "acilacak_formun_adi", , , "[id]=" & Forms![ FORM1]![ FORM2].Form![ ID]

şeklinde olmalıdır.Sizin uygulamanızdan yola çıkılarak belirtmek gerekirse de,işleminiz şu şekilde olmalı.

TALEBİNİZ
ANAFORM üzerinden ilgili alt formda gösterilecek olan frm_SIPARIS_BEKLEYEN adlı formdaki İŞEMRİ butonuna basılması sonucu ilgili kriterin gerçekleştirilmesi.

KRİTERİNİZ
Kod:
strLinkCriteria = "[SIP_NO]=" & Me.SIPARIS_NO

sizin de bahsettiğiniz üzere,direkt olarak frm_SIPARIS_BEKLEYEN adlı formdan çalıştırınca doğal olarak sorunsuz işlem gerçekleştirilir.fakat,bunu eğer bir alt formdayken sağlamak isterseniz,o zaman hata verir ya da sonuç alınmaz.

Me.SIPARIS_NO adlı ifadenin yerine yukarıda örnekte verildiği üzere,bir kod kalıbı kullanmak sureti ile bu sorununuzu giderebilirsiniz.bunun için,

Kod:
Forms!ANAFORM!Sub.Form!SIPARIS_NO

şeklinde yazmanız yeterli olacaktır.elbette ki,aynı zamanda,
Kod:
If DCount("SIP_NO", "[tbl_ISEMRI]", "SIP_NO=" & Me.SIPARIS_NO) > 0 Then

kod satırında da değişiklik yapmalısınız,aynı kod ifadesini bu satırda da belirtmelisiniz.
Kod:
If DCount("SIP_NO", "[tbl_ISEMRI]", "SIP_NO=" & Forms!ANAFORM!Sub.Form!SIPARIS_NO) > 0 Then

şeklinde.


tekli ya da ikili alt formlarda nasıl bir kod kalıbının kullanılacağına dair,gerek bu sitede ve gerekse de internet ortamında (EĞER YABANCI SİTELERDEN YAPILMAK İSTENİRSE,subform of subform on main form in Access Vba şeklinde ifade yazarak çeşitli bilgiler de edinebilirsiniz) araştırmalar yapmak sureti ile bilgiler edinmeye önem veriniz.bu,sizin için iyi bir gelişme ve bilgilenme olacaktır.Son olarak,aşağıda bağlantısı yazılı konuyu okumanız verimli olacaktır kanısındayım.

Konulara eklenen Uygulama içeriğine yönelik Tavsiyeler

Örnek vermek gerekirse,ANAFORM adlı formunuzun Açıldığında olay yordamında denetimleri görünürlük değerlerinin hepsini FALSE yapmak sureti ile gizlemeniz gibi.

bilginize…iyi çalışmalar,saygılar.
 
17/09/2015, 07:54

yenginoglu

Hocam çok teşekkür ederim.

Saygılarımla,
17/09/2015, 09:40

yenginoglu

Hocam yapamadım olmuyor. Kodu yazamadım akşamdan buya uğraştım herhalde karıştırdım.
kodu form adlarıyla örnek yazabilirmisiniz.

Saygılarımla,
17/09/2015, 12:41

atoz112

sayın yenginoglu,

frm_SIPARIS_BEKLEYEN adlı formun İŞ EMRİ adını verdiğiniz Komut76 adlı butonun Tıklandığında olay yordamı içerisine,aşağıdaki kod ifadelerini eskisinin yerine ekleyiniz.(ya da eskisini etkisizleştiriniz,daha sonra belki değerlendirmek üzere).

Kod:
   Me.Onay65 = -1
   Me.RENK = "SARI"
   RENK = Me.RENK
   
   Dim C As Integer
   Dim stDocName As String
   Dim stLinkCriteria As String

'    strLinkCriteria = "[SIP_NO]=" & Me.SIPARIS_NO
   strLinkCriteria = "[SIP_NO]=" & Forms!ANAFORM!Sub.Form!SIPARIS_NO

'If DCount("SIP_NO", "[tbl_ISEMRI]", "SIP_NO=" & Me.SIPARIS_NO) > 0 Then
If DCount("SIP_NO", "[tbl_ISEMRI]", "SIP_NO=" & Forms!ANAFORM!Sub.Form!SIPARIS_NO) > 0 Then

   If MsgBox("BU SİPARİŞİN İŞ EMRİ DAHA ÖNCE AÇILMIŞ..., AÇILMIŞ OLAN İŞ EMRİ'Nİ GÖRMEK İSTERMİSİNİZ...?", _
       vbYesNo) = vbYes Then
       DoCmd.OpenForm "frm_ISEMRI_GOR_BEKLEYEN", acNormal, stLinkCriteria
   Else
        Undo
   End If
Else
   C = MsgBox("İŞ EMRİ OLUŞTURMAK İSTİYORMUSUNUZ..!", vbOKCancel + vbQuestion, "İŞ EMRİ")
   If C = vbOK Then
       DoCmd.OpenForm "frm_ISEMRI_YAP", , , strLinkCriteria
   Else
       Me.Undo
   End If
End If

bilginize...iyi çalışmalar,saygılar.
17/09/2015, 13:03

yenginoglu

Yine aynı boş çıkıyor.
Hocam frm_SIPARIS_BEKLEYEN formunda siparişi aç komutu var ve çalışıyor farklı herhalde.

Saygılarımla,
1 2