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?
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)
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?
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.
Uzun zaman olunca, unutmuşum
çözemedim maalesef.
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.