منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : ارجو المساعده في طباعة التقرير
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
اخواني لدي طابعتين اريد كود لجعل الريبورت الاول يطبع في طابعة والريبورت الثاني يطبع في طابعة اخرى
ارجو الافادة
متابع
ارجو الافادة
متابع نأمل الحل من اعضاء المنتدى
؟؟؟؟؟؟؟؟؟؟؟؟؟؟
لا يوجد حل لهذا الموضوع
بصراحة يا اخي لم اجرب هكذا فكرة
لكن ارى ان تظهر الطابعات والمستخدم يختار الطابعة المناسبة للطباعة
السلام عليكم

- هذا السؤال تم طرحه في المنتدى القديم ,و الذي رابطه في أعلى صفحة هذا المنتدى , هذا هو الكود لعمل ذلك :

كود :
Private Declare Function SetDefaultPrinter Lib "winspool.drv" Alias "SetDefaultPrinterA" (ByVal pszPrinter As String) As Long


Private Sub Command1_Click()

Dim Prt As Printer
Dim Def_PrinterName As String

'تخزين إسم الطابعة الحالية في هذا المتغير
Def_PrinterName = Printer.DeviceName
DoEvents

Set DataReport1.DataSource = Adodc1
DoEvents

For Each Prt In Printers
    
    If Prt.DeviceName = "EPSON LQ-300+II ESC/P2" Or Prt.DeviceName = "Canon MF4320-4350" Then
       SetDefaultPrinter Prt.DeviceName
       DoEvents
       DataReport1.PrintReport False
       DoEvents
   End If

Next

'إستعادة الطابعة الإفتراضية
SetDefaultPrinter Def_PrinterName
DoEvents

End Sub

- تحياتي .
مشكور اخوي
طيب اذا اردنا ان تكون اسم الطابعة محدده في التكست بوكس ماهو الكود بدل هذا

If Prt.DeviceName = "HP" Then
السلام عليكم...

بالإضافة إلى ما تقدم به أخونا VB_Coder مشكوراً فإنه يمكن استعمال الكائنين Printer و Printers لضبط الطابعة الافتراضية للتطبيق دون تغيير الطابعة الافتراضية للنظام (لاحظ أننا نستعمل الخاصية DeviceName التي تعطي الاسم الصحيح الكامل للطابعة):

كود :
Dim Prn As Printer

For Each Prn In Printers
    If UCase$(Prn.DeviceName) = UCase$("hp LaserJet 1010") Then
        Set Printer = Prn    ' اضبط الطابعة الافتراضية
        Exit For                  ' اخرج من الحلقة
    End If
Next

و تبديل الطابعات حسب الحاجة:

كود :
Dim Prn As Printer
Dim Printer1 As Printer    ' الطابعة الأولى
Dim Printer2 As Printer    ' الطابعة الثانية
    
For Each Prn In Printers
    If UCase$(Prn.DeviceName) = UCase$("hp LaserJet 1010") Then
        Set Printer1 = Prn
    ElseIf UCase$(Prn.DeviceName) = UCase$("hp psc 1310 series") Then
        Set Printer2 = Prn
    End If
Next

Set Printer = Printer1    ' اختر الطابعة الأولى
DataReport1.PrintReport False    ' اطبع التقرير الأول

Set Printer = Printer2    ' اختر الطابعة الثانية
DataReport2.PrintReport False    ' اطبع التقرير الثاني

* ملاحظة: بدل تكرار كود البحث عن الطابعتين كلما أردت الطباعة، يمكنك جعل المتغيرين Printer1 و Printer2 عامين (Public) في Module و ضبطهما عند بداية تشغيل البرنامج ثم استعمالهما حسب الحاجة (كما في الأسطر الأربعة الأخيرة في الكود السابق).

أخيراً، و للحصول على قائمة بأسماء الطابعات (في ListBox مثلاً):

كود :
Dim Prn As Printer
    
For Each Prn In Printers
    List1.AddItem Prn.DeviceName
Next

نرجو الاستفادة و السلام.