Skip to main content

AccessTr.neT


Vba Fonksiyon Örneği

Vba Fonksiyon Örneği

Çözüldü #1
Merhaba,
modül kodları:

Visual Basic Code
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ı:

Visual Basic Code
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.

Visual Basic Code
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 

Visual Basic Code
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-...#pid171866

Son Düzenleme: 11/06/2020, 16:13, Düzenleyen: mgunes.
Cevapla
#2

Visual Basic Code
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



Visual Basic Code
Call KytKaynAyari(Me, Form_FRADYASYONMYN, "TRADYASYON")

Cevapla
#3
Merhaba, verdiğiniz düzenlemeyi yaptığımda açılan formda kişinin ilişkili TACALISANKAYDI tablosundaki bilgileri gelirken TRADYASYON tablosundaki kayıtları boş gelmektedir.
Cevapla
#4
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.

.*
Son Düzenleme: 11/06/2020, 19:43, Düzenleyen: feraz.
Cevapla
#5
Ayrıca alttaki gibi kod ile sorgu sonucunu görebilirsiniz.

Msgbox  SqlStr
Msgbox SqlStrRpr
Cevapla
#6
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.

Visual Basic Code
Call KytKaynAyari(Me, Form_FRADYASYONMYN, "TRADYASYON")

Aşağıdaki kodu nerde kullanacağımı anlamadım.

Visual Basic Code
Msgbox  SqlStr
Msgbox SqlStrRpr

Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da