Raporda Toplu Yazdırma

1 2
08/03/2024, 00:16

SeferŞANLI

Arkadaşlar eklediğim dosyada şöyle bir yazdırma işlemini yapmak istiyorum. Yardımcı olabilir misiniz?
* Frm_anaformdan işi seçip (örneğin 9-c) raporlar sayfasına ulaşınca frm_raporlar formunda açılan kutu ya da liste kutusunda o çalışmadaki tüm kişiler için "rpr_stajdosyasi2" raporunu önlü arkalı, "rpr_stajdosyasi8" raporunu tek yüz yazıcıya nasıl gönderebilirim?

Ayrıca "rpr_stajdosyasi8" raporunda baskı önizle yazdı komutunda müdür ve müdür yardımcısı ismi çıkarken direk yazıcıya gönderdiğimde isimler gelmiyor?
09/03/2024, 20:46

atoykan

If IsNull(acogr) Or Me.acogr = "" Then
    MsgBox "Lütfen form çıktısı alacağınız öğrenciyi seçiniz", vbCritical, "Öğrenci Seçim Uyarısı"
    acogr.SetFocus
Else
    Dim strReportName As String
    strReportName = "rpr_stajdosyasi2"
    DoCmd.OpenReport strReportName, acViewNormal
    ' Yazıcı ayarlarını belirleme
    DoCmd.PrintOut PrintRange:=acPages, PrintQuality:=acHigh, Copies:=1, Collate:=True, PrintOrientation:=acPRORPortrait, Color:=acPRCMMonochrome, PrintDuplex:=acPRDPVertical
    DoCmd.Close acReport, strReportName
End If
Önlü arkalı yazdırmak için kodunuza printer ayarlarını eklemeniz gerekir. Burada
PrintRange: basılacak sayfa aralığı
PrintQuality: baskı kalitesini
Copies: kaç kopya basılacağını
Collate: kopyaların basım sırasını (true ise her kopya için önce tüm sayfaları basar sonra diğer kopyaya geçer, false ise her sayfayı kopya sayısı kadar basarak ilerler)
PrintOrientation: Baskının yönünü belirler (acPRORPortrait dikey, acPRORLandscape yatay baskı almanızı sağlar)
Color: baskının siyah/beyaz veya renkli olmasını sağlar (acPRCMMonochrome siyah/beyaz, acPRCMColor renkli baskı verir)
PrintDuplex: Baskının önlü arkalı olmasını ayarlar ( acPRDPVertical baskıyı dikey, acPRDPHorizontal yatay olarak önlü arkalı almanızı sağlar)
10/03/2024, 16:09

SeferŞANLI

Sayın atokyan. Öncelikle teşekkürler. İş yerine gidince kodları deneme şansım olacak. Lakin kodlarda ben bir hususu anlamadım. Ben listedeki tüm öğrencileri yazdıracağım. Diyelim 10 kişi var, tek tuşa basarak öğrencilerin çıktılarını almak istiyorum. Sanki bu kodda diğer ayarlar yapılmış ama tüm kişileri yazdırma yok gibi?
10/03/2024, 17:13

atoykan

Raporlamayı, rapor filtrelemeyi, sorgulamayı, sorguyu filtrelemeyi veya sorguya kriter eklemeyi vs. öğrenmiş olmanız gerek bu zamana kadar ki çalışma ve sorulanrınız ile, o nedenle raporla ilgili herhangi bir detay yok verdiğim kodda. Kod sadece print ayarlarına yönelik. Form üzerinden bir kişi için (örneğin kişi idsi bazında filtrelenerek veya sorgu kriteri olarak kullanılarak) almakta olduğunuz raporun sorgunuza uyan tüm kişileri listeleyecek şekilde düzenlenmesi sorun olmasa gerek diye düşünüyorum. Forma bir buton ekleyip tüm raporlar şeklinde kurgulayabilirsiniz.
13/03/2024, 08:15

SeferŞANLI

Uzun zaman olunca, unutmuşum çözemedim maalesef.
13/03/2024, 14:11

atoykan

Private Sub Komut95_Click()
    On Error GoTo Err_Komut12_Click 
    Dim x As Integer
    Dim stDocName As String

    For x = 0 To Me.lsttm.ListCount - 1
        Me.lsttm.Selected(x) = True ' Listbox satırı seçili hale getirir

        If Me.lsttm.ItemsSelected.Count = 0 Then
            MsgBox ("Yazdırmak için seçili kişi yok")
            Exit Sub
        Else
            stDocName = "rpr_stajdosyasi2"
            DoCmd.OpenReport stDocName, acNormal
        End If

        Me.lsttm.Selected(x) = False ' Listbox satır seçimini kaldırır
    Next x

    Exit_Komut12_Click:
        Exit Sub

    Err_Komut12_Click:
        MsgBox Err.Description
        Resume Exit_Komut12_Click
End Sub
şeklindeki kod listboxınızda öğrencileri sırası ile seçer raporunu yazdırır. Komut95 adlı buton yordamına komut12 diye error handler eklemek de çok mantıklı değil. Bu kadar düzensiz çalışma sonunda kargaşaya ve içinden çıkmadığınız sorunlara sebep olur.
1 2