اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

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

قام بنشر

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

الطالب.accdb

قام بنشر

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

Private Sub أمر25_Click()
On Error Resume Next

    Dim ID As Long
    ID = Me.رقم_الهوية
    DoCmd.OpenReport "T1", acViewNormal, , "[رقم الهوية]=" & ID

On Error GoTo 0
End Sub

 

ملفك بعد التعديل :-

الطالب.zip

قام بنشر

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

اريد فقط الصفحة الاولى من التقرير فقط اذا كان ماكروا او كود جزاكم الله خير الجزاء

قام بنشر
56 دقائق مضت, dd13901390 said:

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

اهااا المشكلة هذه هي بسبب قياسات الصفحة والهوامش 

قم بتصغير عرض التقرير إلى 27 سم وستنتهي المشكلة

تحياتي

 

  • Thanks 1
قام بنشر (معدل)
في 15‏/11‏/2025 at 18:45, kkhalifa1960 said:

تفضل هذا الكود مهما كان الهوامش .

DoCmd.OpenReport "اسم_التقرير", acViewPreview
DoCmd.PrintOut ac

اعتذرا لصاحب الموضوع وكي تعم الفائدة ممكن استاذ تعمل معروف وتزيد للكود طباعة الصفحة اي  نسخ الطباعة 3 مرات بزر واحد

3 نسخ.png

تم تعديل بواسطه طاهر اوفيسنا
قام بنشر
منذ ساعه, طاهر اوفيسنا said:

3 مرات بزر واحد

 

اعتقد يمكن تحقيق ذلك من خلال استخدام OpenArgs كمتغير لعدد النسخ المستهدف طباعتها . وبالتالي نطبق فكرة الطباعة عند فتح التقرير بحيث يتم الطباعة مباشرةً بحلقة تكرارية لعدد مرات الطباعة عند فتح التقرير .

بحيث أولا نفتح التقرير من خلال زر ، مع تمرير قيمة المعامل OpenArgs وهنا سيكون 3 كمثال :-

DoCmd.OpenReport "اسم تقريرك", acViewNormal, , , , "3"

وداخل حدث عند فتح التقرير ، نحدد عدد الصفحات ( كما في المثال السابق ) الصفحة الأولى أو الحالية ، نستخدم الفكرة التالية :-

Private Sub Report_Open(Cancel As Integer)

    Dim c As Integer
    
    If Not IsNull(Me.OpenArgs) Then
        For c = 1 To Val(Me.OpenArgs) - 1
            DoCmd.PrintOut acPages, 1, 1
        Next c
    End If

End Sub

 

 

جرب وأخبرنا بالنتيجة

قام بنشر

لو رجعنا لتعليمات مايكروسوفت بخصوص الامر DoCmd.PrintOut على هذا الرابط سنجد أن صيغة هذا الأمر هي كالتالي

DoCmd.PrintOut (PrintRange, PageFrom, PageTo, PrintQuality, Copies, CollateCopies)

نلاحظ أنه يحتوي على المعلمة (Copies) والتي نحدد فيها عدد النسخ ولكن مع الأسف لا تعمل بشكل صحيح ولا ادري إذا ما كانت هذه المشكلة مرتبطة بنسخة الاوفيس لدي أم انها مشكلة عامة

حبيت اوضح هذه النقطة لتجربتها فإذا عملت لديكم كان بها وإلا فإن طريقة الاخ @Foksh قامت بمعالجة المشكلة 

تحياتي

قام بنشر
10 دقائق مضت, منتصر الانسي said:

نلاحظ أنه يحتوي على المعلمة (Copies) والتي نحدد فيها عدد النسخ ولكن مع الأسف لا تعمل بشكل صحيح ولا ادري إذا ما كانت هذه المشكلة مرتبطة بنسخة الاوفيس لدي أم انها مشكلة عامة

 

كما تفضلتم أخي @منتصر الانسي تماماً ..

نجاح السطر الذي ارفقته وشاركته دليل على أنه أحد خصائص آكسيس التي يمكن من خلالها فعلاً تحديد عندد النسخ من خلال تمرير القيمة داخل سطر الإستدعاء . لكن يبدو من خلال بعض التجارب أن الأمر مرهون بعدة عوائق منها نوع الطابعة ، تعريف الطابعة نفسه ، نظام التشغيل الويندوز أو بمعنى ادق التحديثات التي تُـحدِثــُها مايكروسوفت . لذا توجهت فعلاً إلى استخدام أمر التكرار كحلقة لتكرار أمر الطباعة .

 

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

انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد

يجب ان تكون عضوا لدينا لتتمكن من التعليق

انشئ حساب جديد

سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .

سجل حساب جديد

تسجيل دخول

هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.

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

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

Important Information