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

(تمت الاجابة) تحديد حجم ورقة الطباعة اعتمادا على عدد السجلات


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

السلام عليكم . اخواني الاعزاء احتاج الى طريقة تغير حجم الولاقة من A4 الى A5 عند طباعة التقرير بواسطة زر امر او اي كود

وسوف احال ان اشرح المطلوب بالشكل التالي

لدي برنامج شؤون الموظفين ولدي عدد من التقارير يطبع بشك دوري كل شهر مرة تخص كل موظف على حدى مثلا( المكافئات . الساعاعت الاضافية . الغياب .....) وعند عرض التقارير يظهر لبعض الموظفين سجلات قليلة مثلا خمسة والاخر اكثر من عشر

المطلوب طباعة تقارير الموظفين الذين لديهم اقل من خمسة سجلات على A5 وطباعة تقارير الموظين الذين لديهم اكثر من ذلك على ورقة A4

اتمنى ان اكون وفقت في طرح طلبي

ولكم قائق الشكر والتقدير مقدماً

رابط هذا التعليق
شارك

السلام عليكم . شكراً لك اخي ابو ادم على تجاوبكم مع الموضوع واعتذر لعدم تمكني من ان ارفق ملف لانه كبير ويحتوي على بيانات . وقد وجدت حل وقتي وهي كالاتي

1-انشاء استعلام يحتوي على حقل(re_count) محسوب يقوم بحساب عدد السجلات لكل موظف

2-انشاء استعلام يحتوي على الحقول المطلوبة بالاضافة الى الحقل (re_count)اعلاه مع وضع شرط معايرة (اصغر او يساي 10) وانشاءت تقرير يعتمد على هذا الاستعلام وخترت حجم الورقة A5

3- نسخت الاستعلام في الفقرة 2 مع تغير شرط المعايرة الى ( اكبر من 10 ) وانشاءت تقرير على هذا الاستعلام واخترت حجم الورقة A4

4- صممت مايكرو يقوم بعرض التقريران في ان واحد

وفي الختام اكرر اعتذاري لعدم ارفاق الملف وارجو ان يكون لديكم حل اخر لنني بهذه الطريقة سوف اضطر الى اعادة انشاء اكثر من 10 استعلامات مما يؤدي الى كبر حجم القاعدة

رابط هذا التعليق
شارك

قم بإنشاء وحدة نمطية جديدة وإنسخ اليها :


Option Compare Database

Type str_DEVMODE

RGB As String * 94

End Type

Type type_DEVMODE

strDeviceName As String * 16

intSpecVersion As Integer

intDriverVersion As Integer

intSize As Integer

intDriverExtra As Integer

lngFields As Long

intOrientation As Integer

intPaperSize As Integer

intPaperLength As Integer

intPaperWidth As Integer

intScale As Integer

intCopies As Integer

intDefaultSource As Integer

intPrintQuality As Integer

intColor As Integer

intDuplex As Integer

intResolution As Integer

intTTOption As Integer

intCollate As Integer

strFormName As String * 16

lngPad As Long

lngBits As Long

lngPW As Long

lngPH As Long

lngDFI As Long

lngDFr As Long

End Type

Sub SetupReportPage(InputOrientation As Integer, InputPaperSize As Integer, InputPaperSource As Integer, InputReportName As String)

Dim strDevModeExtra As String

Dim DevString As str_DEVMODE

Dim DM As type_DEVMODE

DoCmd.OpenReport InputReportName, acViewDesign

DoCmd.Minimize

strDevModeExtra = Reports(InputReportName).PrtDevMode

DevString.RGB = strDevModeExtra

LSet DM = DevString

DM.intPaperSize = InputPaperSize

DM.intDefaultSource = InputPaperSource

DM.intOrientation = InputOrientation

LSet DevString = DM

Reports(InputReportName).PrtDevMode = DevString.RGB

DoCmd.Close acReport, InputReportName, acSaveYes

End Sub

يكون مصدر التقرير إستعلام (بدون شروط تخص حجم الورقة) ، وفي زر أمر في النموذج ، إنسخ في حدث عند الضغط ، الكود التالي:

Private Sub Command1_Click()

If RecordCount <= 5 Then

SetupReportPage 2, 11, 4, "Rep1"

DoCmd.OpenReport "Rep1", acViewPreview

Reports!Rep1!Text9 = Printer.PaperSize

Else

SetupReportPage 2, 9, 4, "Rep1"

DoCmd.OpenReport "Rep1", acViewPreview

End If

End Sub

اذا كان عدد القيود يساوي أو أقل من 5 ، سيقوم بإختيار الطباعة على ورق A5

اذا كان عدد القيود غير ذلك ، سيقوم بإختيار الطباعة على ورق A4

جربت الكود لدي وأمورة تمام ...

جرب ووافني بالنتيجة .....

.......................

رابط هذا التعليق
شارك

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

رابط هذا التعليق
شارك

السلام عليكم . في البداية اقدم شكري لجميع الاخوة وبالاخص ل(ابو ادم وابو ياسر ) لاهتمامها بالموضوع .

لقد جربت طريقة الاخ ابو ادم وقد نجحت في تغير حجم الورقة حسب عدد السجلات ولكن ظهرت لدي مشكلة عدم ظهور (الحقول) في نفس الاماكن عند اختيار حجم A5 اي ان التقرير يظهر بشكل غير منسق ومرتب كما في A4 . هل من طريقة لتلافي هذه المشكلة

بعد اذن اخونا ابو ادم ارجو من الاخ ابو ياسر طرح طريقته

رابط هذا التعليق
شارك

الاختلاف في تنسيق التقريريرجع الى ان الورق سيتغير من مقاس الى آخر بينما ابعاده ثابته في الخصائص وهذا شيء بديهي ، لذا يجب ان يصاحب التغيير في الورق تغييرا في المسافات والهوامش فنحن بحاجة اولا الى معرفة المقاسات الافتراضية المناسبة لكل نوع ثم تضمين الكود هذه المقاسات ، هذا ما اعتقده ومع ذلك لم احاول تطبيقه ، والله اعلم

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




Public Function Rline()

Dim Lsum As Double

Lsum = Reports!R1![zz]

Rline = Lsum

End Function


Private Sub طباعه_Click()

On Error GoTo Err_طباعه_Click

DoCmd.OpenReport "R1", acViewPreview, "", "", acNormal

'DoCmd.Minimize

If Rline <= 10 Then

Reports!R1.Printer.PaperSize = acPRPSA5

DoCmd.OpenReport "R1", acNormal

Else

Reports!R1.Printer.PaperSize = acPRPSA4

DoCmd.OpenReport "R1", acNormal

End If

DoCmd.Close acReport, "R1"


Exit_طباعه_Click:

	Exit Sub


Err_طباعه_Click:

	MsgBox Err.Description

	Resume Exit_طباعه_Click


End Sub



zz هو حقل غير منظم في تذييل التقرير لاستخراج عدد السجلات ويكتب في مصدر عنصر التحكم العبارة التالية :
=Count(*)

رابط هذا التعليق
شارك

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