Kritere Göre Pdf Raporu Alma

1 2 3 4 5
28/12/2024, 23:39

mgunes

Merhabalar,
çözümlerinizin uzun uzadıya üzerinde çalıştım;
FVERIGIRIS formu Sağlık Raporlarını Al' a tıkladığımızda - pdfPM butonu tıklama olayındaki tanımladığınız OneEmpRpts() metodu- tc girerek kişinin raporu kısmı (FRAPORAL formu) doğru çalışmadı.
Öte yandan tüm çalışanların raporlarını alma AllEmpRpts() metodu kusursuz çalıştı, tam istediğim gibi. Sadece bununla ilgili şöyle bir pürüz var. VERIGIRIS formu üzerinde açılan kutular (PMF, RMF) ile kişinin herhangi bir muayenesini görüntüleyip kapatınca raporun açılışı SQ_RAPKYTKYN_PM dosyası değişiyor "WHERE (((TACALISANKAYDI.KIMNO)=[Forms]![FRADYASYONMYN]! [mtn_KimNo]));"sql satırı ekleniyor. Bu da daha önce söz ettiğim dosyada parametre değeri gir penceresi (ekranda Formlar!FRADYASYONMYN!mtn_KimNo beliriyor) açılmasına sebep oluyor. Bu yüzden her seferinde rapor kaynağı olan SQ_RAPKYTKYN_PM veya SQ_RAPKYTKYN_RM sorgusunu açıp o Sql satırı siliyorum. Bunun pratik bir yolu olmalı, her seferinde bu müdaheleyi gerektirmeyecek.
29/12/2024, 00:49

atoykan

Pratik yolu raporların sadece bir sorguya dayanması ve formlardan kriter almaması. Benim eklediğim dosyada form denetimlerini sorguda kullanmak yerine raporun where koşuluna kodla nasıl atandığını inceleyin ve ona göre çalışmanızı yapın. Eklediğiniz örnek bazında tamamı çalışır halde düzenlenmiş dosyayı örnek olarak paylaştım sizinle, tek kişi veya bütün çalışanlar bazında tıkır tıkır aldı raporları hata vermeksizin. Taşıma su ile değirmen dönmez, çalışmayı inceleyin kendi uygulamanızda isteğiniz doğrultusunda hangi alanların düzeltilmesi, hangi algoritmada değişiklik yapılması gerektiğini belirleyin çalışmanızı yapın. Başka sorunuz olursa iletin yardımcı olmaya çalışalım.
30/12/2024, 11:18

mgunes

Listbox çift tıklama olayı tek tek tc no üzerinden hatalı çalışmasının nedenini buldum. FRAPORAL formu AllEmpRpts() metodunda olan Vba kodları
    If Dir(StrKlasor, vbDirectory) = "" Then    'Klasör yoksa oluştur varsa kullan
        MkDir StrKlasor
    End If

    If Not (GetAttr(StrTempKlasor) And vbHidden) = 2 Then    'Gizli TempKlasörü yoksa oluştur varsa kullan
        MkDir StrTempKlasor
        SetAttr StrTempKlasor, vbHidden    'TempKlasörü gizle
    End If
satırları OneEmpRpts() metodunda yoktu.
Yanlış çalışmasına sebep olan diğer etken;
StrWhere = "TACALISANKAYDI.KIMNO = " & StrKimNo & " AND TYILLIK2024.MUAYENETARIHI = #" & Format(rsMuayene!MUAYENETARIHI, "yyyy-mm-dd") & "#"
bu satırda yanlış tablonun olması. TYILLIK2024 tablosu TRADYASYON2024 ile değişince düzeldi.
Şimdi sağlıklı çalışıyor.
Tek sorunum kaldı. Raporun where koşuluna kodla nasıl atandığı konusu üzerinde çalışıyorum. Henüz ilerleme sağlayamadım. Access Sql Vba konuları benim çok aşina olduğum alanlar değil, en azından referans kaynak belirtirseniz sevinirim. FVERIGIRIS formunda açılan kutular ile giriş çıkış yaptığımızda raporun kayıt kaynağını önceki haline getirecek yani boş seçecek kodlar istediğim. Tıpkı bunun gibi bir düzenleme. Tabi burda kendi içinde bir tutarlılık ve mimari var.
rsMuayene.Close
    Set rsMuayene = Nothing
   
02/01/2025, 10:27

mgunes

Sayın atoykan katkılarınız için teşekkür ederim. Raporlarda beni çözüme kavuşturdunuz, raporlamada hesaplanmış alanlar için (Vücut kite indeksi, Dr diploma no gibi) resimdeki hatayı alıyorum, ne yapabilirim? Bunları formlarda formülle alıyordum, tablolarda tutulmuyor. Sizi bu yüzden rahatsız ediyorum.

İyi yıllar dilerim.

https://ibb.co/JxYXcLr[/img]
02/01/2025, 11:04

atoykan

Form üzerinde yaptığınız hesaplamaların kaynağı tablolarınız, sonuçları rapora form denetiminden yazdırmak yerine hesaplamayı raporda ilgili denetimde yapın.
02/01/2025, 22:33

mgunes

Söylediğiniz gibi hesaplamayı raporda ilgili denetimde yaparken rapordaki metin kutusunun veri sekmesinde denetim kaynağında- ifade oluşturucusuna hesaplanan bir denetim oluşturunca çeşitli hatalar alıyorum. Bir türlü olmadı. Nerde hata yapıyorum?
Kod:
IIf([VKIndeksi] >= 25 And [VKIndeksi] <= 30, "Fazla Kilolu", "") & IIf([VKIndeksi] > 30, "Obez", "")

Vücut kitle indeksini yapabildim, çalışıyor.
Kod:
=Round([KiloKg]/([BoyMtr]*[BoyMtr]);1)



1 2 3 4 5