Skip to main content

AccessTr.neT


Form Ve Rapor Kayıt Kaynağının Kullanımı

Form Ve Rapor Kayıt Kaynağının Kullanımı

Çözüldü #1
Merhaba, çalışmamla ilgili anlatımım detaylı olacak.
Eski muayenelerin erişilebilir olması gerekiyor, işlemler için talep edilebiliyor. Pilot çalışma olarak radyasyon muayeneleri üzerinden gidiyorum, yıllık yapılıyor. Form şablonu FRADYASYONMYN, rapor şablonu 3 sayfa; RAPRADMYNSYF1, RAPRADMYNSYF2, RAPRADMYNSYF3. Çareyi her yıl için form ve 3’er sayfalık rapor oluşturmak yerine kayıt kaynağını ayarlamakta buldum.
Karşılama ekranı FVERIGIRIS formu, buradaki liste kutusundan isim aratıp radyasyon seçiminden yılı seçip FRADYASYONMYN formunu açıyor. Form ve rapor için 2015 yılı verilerini getirecekse ilişkili 2 tablodan çalışan bilgilerinin yer aldığı TACALISANKAYDI ve TRADYASYON2015 ‘a bağlanıyor. En sık kullanacağımız muayene sürecinin aktif yürütüldüğü 2020 yılı tablosu olacaktır. Prosedür şu şekilde: kişinin önce sekreterce ön bilgileri güncellenir, adres çocuk sayısı gibi. (TACALISANKAYDI formu). Sekreter muayene tarihine (dahil) kadar kısmı girip kaydettiğinde kişi muayene sırası listboxunda geçerli bugünkü muayeneler gösteriliyor, (FVERIGIRIS formunda). Hekim buradan FRADYASYONMYN formuna erişip doldurduğunda bu aşamada kaydetme ve raporu yazıcıya gönderme yapılıyor. Doktor ve sekreter odaları ayrı bilgisayarlar, paylaşılan klasördeki aynı access dosyası kullanılıyor. (Dr. odasının) Eğer radyasyon için bir yapı oluşturursam bunu periyodiklere de uyarlayacağım.
Bir de formda periyodik muayenelerin tutulduğu TANAMNEZ1, ve TANAMNEZ2 tabloları var, burada FPERIYODIKM formu 1. Muayeneyi diğeri 2. temsil ediyor. Karşılama ekranındaki listboxdaki muayene tarihi sorguyu öyle yapılandırdığım için periyodik muayene tarihlerini içeriyor.( TANAMNEZ2 den alıyor)
Ana ekrandaki RAPOR AL butonu çalışanları filtreleme için, örneğin Eczacılıktan kimler hangi tarihlerde muayenelere gelmiş, bunu rapor olarak listeyebiliyorum, “çalışıyor” kriteri ekleyerek.(RGUNLUKGELEN raporu)
Sizin bahsetiğiniz, formun açık kaldığı sürece aynı sorguyu kullanması, raporun ise yazıcıya gönderilip kaydedilmeden kapatılması, tasarım modunda açılmasına gerek olmaması önerilerinizi de uygulayalım.
.rar FormRaporKayitKaynagiDenetimi_Mg.rar (Dosya Boyutu: 201,23 KB | İndirme Sayısı: 3)
Son Düzenleme: 07/06/2020, 12:03, Düzenleyen: mgunes.
Cevapla
#2
formu açmada sorun yok ama raporlar farklı yerlerden açıldığı için raporlar için daha farklı bir yöntem düşündüm, hepsi için ortak bir sorgu oluşturup -burada kast ettiğim aynı sorgu kaynağını kullanan raporlar için- raporları değil de ihtiyaç anında ihtiyaca göre sorgu kaynağını farklı kaydetmek
RAPRADMYNSYF raporları için SqlRAPRADMYNSYF isminde ortak bir sorgu oluşturdum (içerik önemsiz rasgele sorgu)
RAPRADMYNSYF raporlarını bu sorguya bağladım
FVERIGIRIS formundaki, BtnKaydaGitR butonunun kodunu
Dim SqlStr, SqlStrRpr As String
' formun kayıt kaynağının ayarlanması
SqlStr = " SELECT TACALISANKAYDI.*, TRADYASYON" & Me.AclRMynSec & ".* FROM TACALISANKAYDI LEFT JOIN TRADYASYON" & Me.AclRMynSec & _
        " ON TACALISANKAYDI.KIMNO = TRADYASYON" & Me.AclRMynSec & ".KIMNO"
SqlStrRpr = SqlStr & " WHERE (((TACALISANKAYDI.KIMNO)=[Formlar]![FRADYASYONMYN]![mtn_KimNo]))"

DoCmd.OpenForm "FRADYASYONMYN"
Forms!FRADYASYONMYN.RecordSource = SqlStr
DoCmd.OpenForm "FRADYASYONMYN", , , "TACALISANKAYDI.KIMNO=" & Me.LstKayitSorg
DoCmd.Close acForm, Me.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
Not: bu ara dikkatimi çeken hiç bir kaydı seçmesek bile buton diğer formu açmaya çalışıyor
bunu engelleyen kod eklemeniz yerinde olur

Tabi istenirse aynı mantık formlara da uygulanabilir  hatta modüle eklenecek fonksiyon ile her formdan kullanilabilir
.rar FormRaporKayitKaynagiDenetimi_Mg_hy.rar (Dosya Boyutu: 235,9 KB | İndirme Sayısı: 8)
Cevapla
#3
(07/06/2020, 19:20)berduş yazdı: hiç bir kaydı seçmesek bile buton diğer formu açmaya çalışıyor
Listboxtan kayıt seçili olmayınca hata iletisi açılıyor, bu denetim için ayrıca düşünmem gerek.
Evet mükemmel olmuş yine, sistematiğini çözemezesem de. 
Modüle eklenecek fonksiyon ile ilgili kalıp sunarsanız memnun olurum. Katkılarınız, çözümleriniz için size ve forumun paydaşlarına sevgi ve saygılarımı sunarım.
Cevapla
#4
Sistem çok karmaşık değil sadece o 3 rapor ici tek bir sorgu tanımlayıp o sorgunun kodunu degistip kaydettim
Cevapla
#5
Merhaba, siz konuyu taşımışsınız gerçi ama, aynı çalışma üzerinden yürüdüğüm için son sözettiğiniz fonksiyon tanımlayıp denediğimde en son 

"Run - time error '2102' Özellik sayfasında ya da bir makroda girdiğiniz form adı, 'SablonForm' yanlış yazılmış veya varolmayan bir forma başvuruyor. " vba 

hatası alıyorum.

Modül:
Public Sub KytKaynAyari(ByVal MvctForm As Access.Form, ByVal SablonForm As String)
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]![SablonForm]![mtn_KimNo]))"

DoCmd.OpenForm "SablonForm"
Forms!SablonForm.RecordSource = SqlStr
DoCmd.OpenForm "SablonForm", , , "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

FVERIGIRIS formundaki radyasyon seçimi tıklanıldığında olayı:
Kod:
Call KytKaynAyari(Me, "FRADYASYONMYN")
Dilerseniz yeni konu açayım.  Teşekkürler.
Cevapla
#6
Yeni konu açarsanız iyi olur ama çalışmanızda buna ihtiyaç var mı?
Kaç yerden bu fonksiyon çağrılacak, yapı çağrılacak fonksiyona uygun mu?
Fonksiyon girdi olarak
1 - açılacak formun adi
2 - açılacak formun kullandığı sorgu
3 - form sorgusu için kullanılacak Sql kodu
4 - açılacak raporlarda kullanılan sorgu
5 - bu rapora gönderilecek Sql kodu
Eğer çalışmanızda yukardaki yapıya uygun çok sayıda değiştirme , açma işlemi gibi işlemler yapılıyorsa fonksiyon kullanılabilir ama az sayıda kullanılacaksa hangisinin daha pratik olduğuna sizin karar vermeniz gerekebilir
Yukardaki fonksiyon illaki birşekilde olmak zorunda değil ama temel mantık böyle birşey olur
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da