Varsayılan yazıcı sorunu

1 2
17/02/2016, 23:55

kenan827

Merhaba arkadaşlar kullandığım programda FaturaDokum raporu açıldığı zaman ayni zamanda YaziciSec formu da açılıyor YaziciSec formunda açılan kutuda yazıcıyı seçip yazdırıyorum. Hangi yazıcıyı seçiyorsam varsayılan yazıcı olarak ayarlanıyor.

 
Benim istediğim YazıcıSec formunda açılan kutuda hangi yazıciyi seçiyorsam o yazıcıdan tek sayfa çıktı alınsın , rapor sayfası ve YaziciSec formu kapansın ve çıktı aldığımız yazıcı varsayılan yazıcı olmasın. Daha önce varsayılan olarak ayarlanan yazıcı yine varsayılan yazıcı olarak kalsın.
 
Aşağıdaki kodlarla yapmaya çalıştım. beceremedim. Varsayılan yazıcıya geri dönmuyor. Rapor ve YaziciSeç formu kapanmiyor. Bu konularda yardımlarınızı bekliyorum yardımlarınız için şimdiden teşekkürler.


Kod:
Private Sub Form_Open(Cancel As Integer)
Dim prt As Printer
Me.YaziciSec.RowSource = ""
For Each prt In Application.Printers
    Me!YaziciSec.AddItem Item:=prt.DeviceName
Next prt
End Sub

Private Sub Komut14_Click()
On Error GoTo Err_Komut14_Click
    Dim prt As Printer
    Dim stDocName As String
    Set prt = Application.Printers(Me!YaziciSec.Value)
    Set Application.Printer = prt
    stDocName = "FaturaDokum"
   DoCmd.PrintOut acPages, 1, 1
Set Application.Printer = Application.Printers(strDefaultPrinter)
Exit_Komut14_Click:
    Exit Sub
Err_Komut14_Click:
    MsgBox Err.Description
    Resume Exit_Komut14_Click
    DoCmd.OpenForm "FaturaDokum", , , stLinkCriteria
    DoCmd.Close acForm, "YaziciSec"
DoCmd.Close acReport, "FaturaDokum"
End Sub
18/02/2016, 11:21

ozanakkaya

DoCmd.OpenForm "FaturaDokum", , , stLinkCriteria
    DoCmd.Close acForm, "YaziciSec"
DoCmd.Close acReport, "FaturaDokum"

şeklindeki kodları hata durumunda çalışacak kısma eklemişsiniz. Hata yoksa üstteki kodlar çalışmaz

Kodu aşağıdaki ile değiştirerek deneyiniz.

Private Sub Komut14_Click()

On Error GoTo Err_Komut14_Click
    Dim prt As Printer
    Dim stDocName As String
    Set prt = Application.Printers(Me!YaziciSec.Value)
    Set Application.Printer = prt

   DoCmd.OpenReport "tbl_kisiler", acPreview
DoCmd.Close acForm, "YaziciSec"
  DoCmd.PrintOut acPages, 1, 1
   DoCmd.Close acReport, "tbl_kisiler"
 

Exit_Komut14_Click:
    Exit Sub
Err_Komut14_Click:
    MsgBox Err.Description
    Resume Exit_Komut14_Click
End Sub

Atoz hocanın uyarısı ile koddaki hatalı kısım düzeltilmiştir.
18/02/2016, 14:22

kenan827

Çok teşekkürler hocam ellerinze sağlık. Konuytu taşıyabilirsiniz.
18/02/2016, 19:07

kenan827

Hocam açtığım konuya cevap vermiştiniz yazıcıdan tek sayfa çıktı alıyorum. Çıktıdan sonra Rapor sayfası ve YaziciSeç formu kapanıyor. Buraya kadar hiç bir sorun yok. Sonradan farkına vardım.
Hangi yazıcıyı seçip çıktı alıyorsak o yazıcıyı varsayılan yazıcı olarak kalıyor. Daha önce varsayılan yazıcıya dünülmuyor. Hocam birde aşağıdıki kodları nereye ekleyeceğimi çözemedim.

Alıntı:
şeklindeki kodları hata durumunda çalışacak kısma eklemişsiniz. Hata yoksa üstteki kodlar çalışmaz

DoCmd.OpenForm "FaturaDokum", , , stLinkCriteria
DoCmd.Close acForm, "YaziciSec"
DoCmd.Close acReport, "FaturaDokum"
18/02/2016, 19:30

atoz112

sayın kenan827,

öncelikle,
bir tavsiyede bulunmanın faydalı olacağı kanısındayım.

lütfen,eğer katılımcılar tarafından sunulan paylaşımları (bilgilendirme veya örnek olsa dahi) tam olarak denemeden ve net sonuç elde etmeden konunuzun kapatılmasını talep etmeyiniz.

bahsini yaptığınız sorunları içerecek hali ile örnek uygulamanızın son kullanılabilir olanını mesajınızla birlikte konunuza dahil ediniz.üzerinden,açıklamaların yapılması daha yerinde olacaktır.

ayrıca,bu konunuzda paylaştığınız kodlar incelendiğinde bir olumsuzluk var kanısındayım.şöyle ki,hem yazıcı seçiminin yapılacağı bir form çağırmaktasınız hem de
Kod:
Set prt = Application.Printers(Me!YaziciSec.Value)
kod satırı ile direkt bir denetimden değer atamaktasınız.kaldı ki,eğer açılan formdaki bir değer olsaydı bunun yazım şekli farklı olmalıydı.
Kod:
[Forms]![YaziciSec]![YaziciSec]
şeklinde.iki printer atama işlemini aynı anda gerçekleştirmek gibi bir durum bu.ya
Kod:
Dim prt As Printer
    Dim stDocName As String
    Set prt = Application.Printers(Me!YaziciSec.Value)
    Set Application.Printer = prt
bu kodlar iptal edilmeli ve direkt yazıcı seçilecek formdan işlem yaptırılmalı ya da ilgili form iptal edilerek bu kodlarda işlemler sağlatılmalı.

Alıntı:...Hangi yazıcıyı seçip çıktı alıyorsak o yazıcıyı varsayılan yazıcı olarak kalıyor...

sorunuzun cevabı olarak;raporu kapatma kodunun bir alt satırına
Kod:
Set Application.Printer = Nothing
kod satırı son kısma dahil edilerek çözülebilir.veyahut da,eğer direkt olarak herhangi bir yazıcının yine varsayılan yazıcı olarak kalmasını istiyorsanız,bu yazıcı seçiminin ardından,o zaman
Kod:
set application.printer = GetPrinter("varsayilan_olmasi_istenen_yazici_tam_adi")
kod ifadesini raporu kapatma satırının ardından ekleyebilirsiniz.
Kod:
DoCmd.OpenForm "FaturaDokum", , , stLinkCriteria
DoCmd.Close acForm, "YaziciSec"
DoCmd.Close acReport, "FaturaDokum"
bu kodlar da,raporu ön izleme olarak açma kodunun bir altına yazılması gerekmektedir.

son olarak;eğer sorun devam ediyor düşüncesi ile örnek eklemeleriniz olacaksa,geçici olarak konunuzu Cevaplanmış Sorular kategorisi'nden yeniden taşıyorum.bilginize...iyi çalışmalar,saygılar.
18/02/2016, 20:18

kenan827

Hocam kodlardan anlamadığım için benzer konularda araştırma yaparak kodları ekliyorum. Hangi kodu ne ifade ettiğini bilmiyorum. O yüzden bazen yanlış kod ekliyorum yanlış yere ekliyorum.
YaziciSec Formundaki kotları ekliyorum üzerinde gekli düzeltmeleri yaparsanız sevinirim. Saygılarımla iyi çalışmalar.


Kod:
Private Sub Form_Open(Cancel As Integer)
Dim prt As Printer
Me.YaziciSec.RowSource = ""
For Each prt In Application.Printers
    Me!YaziciSec.AddItem Item:=prt.DeviceName
Next prt
End Sub
 
Private Sub Komut14_Click()
On Error GoTo Err_Komut14_Click
    Dim prt As Printer
    Dim stDocName As String
    Set prt = Application.Printers(Me!YaziciSec.Value)
    Set Application.Printer = prt
   DoCmd.OpenReport "FaturaDokum", acPreview
DoCmd.Close acForm, "YaziciSec"
   DoCmd.PrintOut acPages, 1, 1
   DoCmd.Close acReport, "FaturaDokum"
Set Application.Printer = Application.Printers(strDefaultPrinter)
Exit_Komut14_Click:
    Exit Sub
Err_Komut14_Click:
    MsgBox Err.Description
    Resume Exit_Komut14_Click
DoCmd.OpenForm "FaturaDokum", , , stLinkCriteria
   DoCmd.Close acForm, "YaziciSec"
DoCmd.Close acReport, "FaturaDokum"
End Sub
1 2