Vba Fonksiyon Örneği - mgunes - 11/06/2020
Merhaba,
modül kodları:
Public Sub KytKaynAyari(ByVal MvctForm As Access.Form)
Dim SqlStr, SqlStrRpr As String
' formun kayıt kaynağının ayarlanması
SqlStr = " SELECT TACALISANKAYDI.*, TRADYASYON" & MvctForm.AclRMynSec & ".* FROM TACALISANKAYDI LEFT JOIN TRADYASYON" & MvctForm.AclRMynSec & _
" ON TACALISANKAYDI.KIMNO = TRADYASYON" & MvctForm.AclRMynSec & ".KIMNO"
SqlStrRpr = SqlStr & " WHERE (((TACALISANKAYDI.KIMNO)=[Formlar]![FRADYASYONMYN]![mtn_KimNo]))"
DoCmd.OpenForm "FRADYASYONMYN"
Forms!FRADYASYONMYN.RecordSource = SqlStr
DoCmd.OpenForm "FRADYASYONMYN", , , "TACALISANKAYDI.KIMNO=" & MvctForm.LstKayitSorg
DoCmd.Close acForm, MvctForm.Name
'' rapor kayıt kaynağı ayarlama kod bloğu
CurrentDb.QueryDefs("SqlRAPRADMYNSYF").SQL = SqlStrRpr 'burada raporların kullandığı ortak sorgunun yapısı değiştirilmiştir
End Sub
Tıklanma olayı:
Call KytKaynAyari(Me)
gibi düzenlendiğinde sistem çalışıyor. Ancak TRADYASYON tablosu ve FRADYASYONMYN formunu değişken olarak aşağıdaki gibi tanımladığımda düzenek hata veriyor.
Public Sub KytKaynAyari(ByVal MvctForm As Access.Form, ByVal ACILACAKFORM, TABLOADI As String)
Dim SqlStr, SqlStrRpr As String
' formun kayıt kaynağının ayarlanması
SqlStr = " SELECT TACALISANKAYDI.*, TABLOADI" & MvctForm.AclRMynSec & ".* FROM TACALISANKAYDI LEFT JOIN TABLOADI" & MvctForm.AclRMynSec & _
" ON TACALISANKAYDI.KIMNO = TABLOADI" & MvctForm.AclRMynSec & ".KIMNO"
SqlStrRpr = SqlStr & " WHERE (((TACALISANKAYDI.KIMNO)=[Formlar]![ACILACAKFORM]![mtn_KimNo]))"
DoCmd.OpenForm "ACILACAKFORM"
Forms!ACILACAKFORM.RecordSource = SqlStr
DoCmd.OpenForm "ACILACAKFORM", , , "TACALISANKAYDI.KIMNO=" & MvctForm.LstKayitSorg
DoCmd.Close acForm, MvctForm.Name
'' rapor kayıt kaynağı ayarlama kod bloğu
CurrentDb.QueryDefs("SqlRAPRADMYNSYF").SQL = SqlStrRpr 'burada raporların kullandığı ortak sorgunun yapısı değiştirilmiştir
End Sub
Diğeri
Call KytKaynAyari(Me, "FRADYASYONMYN", "TRADYASYON")
compile yapınca sorun yok, kişi kaydı olayını işletince takılıyor:" Run-Time '2102': Özellik sayfasında ya da bir makroda girdiğiniz form adı, 'ACILACAKFORM' , yanlış yazılmış veya varolmayan bir forma başvuruyor. "
Kaynak dosya: https://accesstr.net/konu-form-ve-rapor-kayit-kaynaginin-kullanimi.html?pid=171866#pid171866
RE: Vba Fonksiyon Örneği - feraz - 11/06/2020
Public Sub KytKaynAyari(ByVal MvctForm As Access.Form, ByVal ACILACAKFORM As Access.Form, ByVal TABLOADI As String)
Dim SqlStr, SqlStrRpr As String
' formun kayit kaynaginin ayarlanmasi
SqlStr = " SELECT TACALISANKAYDI.*," & TABLOADI & MvctForm.AclRMynSec & " .* FROM TACALISANKAYDI LEFT JOIN " & TABLOADI & MvctForm.AclRMynSec & _
" ON TACALISANKAYDI.KIMNO =" & TABLOADI & MvctForm.AclRMynSec & ".KIMNO"
SqlStrRpr = SqlStr & " WHERE (((TACALISANKAYDI.KIMNO)=ACILACAKFORM![mtn_KimNo]))"
DoCmd.OpenForm ACILACAKFORM.Name
ACILACAKFORM.RecordSource = SqlStr
DoCmd.OpenForm ACILACAKFORM.Name, , , "TACALISANKAYDI.KIMNO=" & MvctForm.LstKayitSorg
DoCmd.Close acForm, MvctForm.Name
' rapor kayit kaynagi ayarlama kod blogu
CurrentDb.QueryDefs("SqlRAPRADMYNSYF").SQL = SqlStrRpr 'burada raporlarin kullandigi ortak sorgunun yapisi degistirilmistir
End Sub
Call KytKaynAyari(Me, Form_FRADYASYONMYN, "TRADYASYON")
RE: Vba Fonksiyon Örneği - mgunes - 11/06/2020
Merhaba, verdiğiniz düzenlemeyi yaptığımda açılan formda kişinin ilişkili TACALISANKAYDI tablosundaki bilgileri gelirken TRADYASYON tablosundaki kayıtları boş gelmektedir.
RE: Vba Fonksiyon Örneği - feraz - 11/06/2020
Merhaba sizin kodları uyguladım.
Fonksiyonsuz olarak deneyin birde değişkenleri manuel girip aynısımı olacak.
Birde alttaki yerleri neden eklediniz anlamadım.
.*
RE: Vba Fonksiyon Örneği - feraz - 11/06/2020
Ayrıca alttaki gibi kod ile sorgu sonucunu görebilirsiniz.
Msgbox SqlStr
Msgbox SqlStrRpr
RE: Vba Fonksiyon Örneği - mgunes - 11/06/2020
Fonksiyonsuz denediğimde; Run-time error '424' :Object required hatası oluşuyor.
"Birde alttaki yerleri neden eklediniz.." ifadenizle ilgili; bu kodu FVERIGIRIS formunda radyasyon muayenesi seçimi tıklanma olayına yazıyorum.
Call KytKaynAyari(Me, Form_FRADYASYONMYN, "TRADYASYON")
Aşağıdaki kodu nerde kullanacağımı anlamadım.
Msgbox SqlStr
Msgbox SqlStrRpr
|