اذهب الي المحتوي
أوفيسنا

الردود الموصى بها

قام بنشر

السلام عليكم اساتذتي الكرام

لدي نموذج يحتوي على ازرار طابعات كاشير network وتم تحديد ip لكل طابعة 

المطلوب عند النقر على اي طابعة  يتم اعطاء امر الطباعة للطابعة التي تم اختيارها من قبل مدير النظام 

وجزاكم الله خيرا 

printer.accdb

قام بنشر

عليكم السلام

يجب عليك التفصيل اكثر ، طلبك غير مفهوم

انت تعرف عملك ومالذي تريد  ولكننا لا نعرف ما يدور في رأسك

هل الفورم هذا موجود عند كل مستخدم بأزراره ؟ اذا الجواب نعم لماذا ؟  ، لانه غير منطقي ... اشرح بالتفصيل ما يحدث بالضبط

اشرح الفكرة والغرض منها بالتفصيل الممل

  • Like 2
قام بنشر

استاذي العزيز 

عدد الطابعات المتوفرة 5

مطعم متكون من 5 طوابق كل طابق يتخصص بعمل معين 

مثلا

ط 1 عصائر

ط 2 اراكيل

ط 3 اكلات شرقية

ط 4 اكلات غربية

ط 5 حلويات 

في كل طابق طابعة 

المطلوب هو ان يتم اعطاء الامر للطابعة حسب طلبات الزبون مجرد ما يتم النقر على مثلا طابعة ط 3 يتم ارسال الامر الى الطابعة 

 

استاذي العزيز احتاج فقط كود يتضمن ip كل طابعة 

 

ولكم جزيل الشكر

 

 

قام بنشر (معدل)

جرب هذا الكود.. لكنه يعطي خطأ اذا كانت الطابعة غير موجودة

Quote

Private Sub cmdPrint_Click()
On Error GoTo Err_cmdPrint_Click
 Dim stDocName As String
 stDocName = "اسم تقرير الطبع"
 DoCmd.OpenReport stDocName, acViewNormal
 Reports(stDocName).Printer = "اسم الطابعة"

Err_cmdPrint_Click:
 Resume Next

End Sub

 

 

تم تعديل بواسطه Eng.Qassim
  • Like 1
قام بنشر

تفضل

Private Declare Function SetDefaultPrinter Lib "winspool.drv" Alias "SetDefaultPrinterA" (ByVal pszPrinter As String) As Long
Private Sub cmdprt_Click()
' تعيين الطابعة الافتراضية
SetDefaultPrinter ("hp LaserJet 1000")
' أمر الطباعة
DoCmd.OpenReport "yourReport", acViewNormal
End Sub

لست بحاجة الى ip حيث تجد اسم الطابعة في الحاسب الرئيس في شاشة الاجهزة والطابعات

صحيح قد تكون الطابعات من النوع والاسم نفسه ولكن تجد في آخر الاسم ما يدل على الموقع

 

  • Like 3
قام بنشر

واذا اردت استخراج اسماء الطابعات برمجيا

هذه الوحدة النمطية للحصول على اسماء الطابعات المثبتة في جهازك

Public Function GetPrinters() As String
    Dim prn As Printer
    Dim strPrinter As String
       If Application.Printers.Count > 0 Then
        For Each prn In Application.Printers
            strPrinter = strPrinter & """" & prn.DeviceName & """;"
        Next
        GetPrinters = Left$(strPrinter, Len(strPrinter) - 1)
    End If
 End Function

ويمكنك مناداة الوحدة النمطية اعلاه واظهار الاسماء في مربع تحرير داخل النموذج

اكتب هذا الكود في حدث الفتح او التحميل للنموذج

Dim strMsg As String
Dim strTemp As String
         strTemp = GetPrinters()
        If Len(strTemp) = 0 Then
            Cancel = True
            strMsg = "No installed printers found."
        Else
            Me.cboPrinter.RowSource = strTemp
        End If

 باعتبار  Me.cboPrinter  هو اسم مربع التحرير في النموذج

  • Like 3
قام بنشر
6 hours ago, ابوخليل said:

واذا اردت استخراج اسماء الطابعات برمجيا

هذه الوحدة النمطية للحصول على اسماء الطابعات المثبتة في جهازك

Public Function GetPrinters() As String
    Dim prn As Printer
    Dim strPrinter As String
       If Application.Printers.Count > 0 Then
        For Each prn In Application.Printers
            strPrinter = strPrinter & """" & prn.DeviceName & """;"
        Next
        GetPrinters = Left$(strPrinter, Len(strPrinter) - 1)
    End If
 End Function

ويمكنك مناداة الوحدة النمطية اعلاه واظهار الاسماء في مربع تحرير داخل النموذج

اكتب هذا الكود في حدث الفتح او التحميل للنموذج

Dim strMsg As String
Dim strTemp As String
         strTemp = GetPrinters()
        If Len(strTemp) = 0 Then
            Cancel = True
            strMsg = "No installed printers found."
        Else
            Me.cboPrinter.RowSource = strTemp
        End If

 باعتبار  Me.cboPrinter  هو اسم مربع التحرير في النموذج

السلام عليكم استاذ ابو خليل..ظهر لي هذا الخطأ

image.png.9414eec576f3086100decb5c14cf45a9.png

قام بنشر
35 minutes ago, اكرم العريقي said:

اتمنى ان يفيدك هذا المرفق

بالتوفيق

https://wayprograms.blogspot.com/2021/06/print-from-more-than-printer-in-same.html

السلام عليكم

المثال المرفق في الرابط هو لطابعات معينة يتم ادراج اسمائها في جدول  ويتم استدعائها من خلال مربع التحرير..وفي اعتقادي هذا يسبب مشكلة عند عطل احدى الطابعات واستبدالها باخرى ..الصحيح ان هناك كود يقوم بالبحث عن الطابعات المسجلة في الجهاز ويقوم باستدعائها

تحية لك

قام بنشر

شكرا اساتذتي الكرام على المساعدة 

استاذي العزيز @ابوخليل تم تجربة الكود 

Private Declare Function SetDefaultPrinter Lib "winspool.drv" Alias "SetDefaultPrinterA" (ByVal pszPrinter As String) As Long Private Sub cmdprt_Click() ' تعيين الطابعة الافتراضية SetDefaultPrinter ("hp LaserJet 1000") ' أمر الطباعة DoCmd.OpenReport "yourReport", acViewNormal End Sub

والكود يعمل بصورة صحيحة ولكن المشكلة كالاتي

لو نفرض الطابعة الافتراضية طابعة طابق 1

عند النقر على زر طابعة طابق 2 يتم الطبع من طابعة رقم 1

وعند النقر مرة اخرى يتم طباعة الامر على طابعة طابق رقم 2 

وكانما الكود يحتاج وقت لاختيار طابعة افتراضية 

وجزاكم الله خير الجزاء 

 

 
قام بنشر
17 hours ago, eng aoff said:

شكرا اساتذتي الكرام على المساعدة 

استاذي العزيز @ابوخليل تم تجربة الكود 

Private Declare Function SetDefaultPrinter Lib "winspool.drv" Alias "SetDefaultPrinterA" (ByVal pszPrinter As String) As Long Private Sub cmdprt_Click() ' تعيين الطابعة الافتراضية SetDefaultPrinter ("hp LaserJet 1000") ' أمر الطباعة DoCmd.OpenReport "yourReport", acViewNormal End Sub

والكود يعمل بصورة صحيحة ولكن المشكلة كالاتي

لو نفرض الطابعة الافتراضية طابعة طابق 1

عند النقر على زر طابعة طابق 2 يتم الطبع من طابعة رقم 1

وعند النقر مرة اخرى يتم طباعة الامر على طابعة طابق رقم 2 

وكانما الكود يحتاج وقت لاختيار طابعة افتراضية 

وجزاكم الله خير الجزاء 

 

 

لماذا لاتجعل امام كل طابق مربع تحرير وتختار له القيمة الافتراضية ..لكنها ربما غير احترافية

قام بنشر
22 ساعات مضت, eng aoff said:

وكانما الكود يحتاج وقت لاختيار طابعة افتراضية 

 

واضح ان المشكلة .. الثقل والبطء عندك انت في جهازك

جربته سابقا على اكثر من برنامج على الشبكة يعمل بامتياز

النظام عندي  وندوز7  32 بت

قام بنشر
55 minutes ago, ابوخليل said:

واضح ان المشكلة .. الثقل والبطء عندك انت في جهازك

جربته سابقا على اكثر من برنامج على الشبكة يعمل بامتياز

النظام عندي  وندوز7  32 بت

السلام عليكم استاذ ابو خليل.. الاخ صاحب المشاركة وضع القيمة الافتراضية للطابعة على ط1 وحينما يضغط على الطابعة في ط2 فانها تطبع للطابق الاول الا بعد الضغط مرة اخرى فتطبع للطابق 2.. وانا اقترحت عليه ان يضع مربع تحرير امام زر كل طايق ويضع القيمة الافتراضية للطابعة ..فما هو رايك استاذنا

قام بنشر

اساتذتي الكرام @ابوخليل @Eng.Qassim 

علما الويندوز لدي سيرفر 2016 و win10 pro للمستخدمين ياريت اذا اكو حل لدي خلل حاليا في طباعة الطلبات اول شي يطبع defult ومن ثم انقر مرة اخرى على الزر يتم طباعة الامر من الطابعة المحددة لدي

 

قام بنشر

دعنا نجرب غير السطر الاول الذي هو في اعلى المحرر بهذا :

Private Declare PtrSafe Function SetDefaultPrinter Lib "winspool.drv" Alias "SetDefaultPrinterA" (ByVal pszPrinter As String) As Long

فقط تم اضافة  PtrSafe

2 ساعات مضت, Eng.Qassim said:

السلام عليكم استاذ ابو خليل.. الاخ صاحب المشاركة وضع القيمة الافتراضية للطابعة على ط1 وحينما يضغط على الطابعة في ط2 فانها تطبع للطابق الاول الا بعد الضغط مرة اخرى فتطبع للطابق 2.. وانا اقترحت عليه ان يضع مربع تحرير امام زر كل طايق ويضع القيمة الافتراضية للطابعة ..فما هو رايك استاذنا

اعتقد لا يلزم

لانه عند النقر على الزر  فالحدث يقوم بتغيير الطابعة الافتراضية  الى الأمر الجديد اولا  ثم تتم الطباعة

  • Like 1
قام بنشر

نعم يمكن

ولكن  يجب ان يكون هناك اشارة مرجعية او بمعنى وجود رقم على الفورم يدل على الطابعة المراد الطباعة عليها

هل هذا مفهوم؟

قام بنشر

السلام عليكم أستاذنا الغالي أبو خليل حياك الله

أخي السائل بما أنك وضعت قائمة منسدلة تجلب منها اسم الطابعة فأنت لا تحتاج إلى خمسة أزرار زر واحد فقط لأنك سوف تكرر الكود خمس مرات

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information