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

ازاى اتحكم فى هوامش التقرير عن طريق وضع قيم فى فورم الاعدادات


إذهب إلى أفضل إجابة Solved by ابو جودي,

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

3 hours ago, safaa salem5 said:

 

 

 

3 hours ago, safaa salem5 said:

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

مثل  هامش من الاعلى  - الهامش من الاسفل - الهامش من الجانب

تم تعديل بواسطه safaa salem5
رابط هذا التعليق
شارك

Private Sub Report_Open(Cancel As Integer)
  Dim T, L, B
   T = Nz(DLookup("top", "settings_Report_tbl"), 1)
   L = Nz(DLookup("left", "settings_Report_tbl"), 1)
   B = Nz(DLookup("bottom", "settings_Report_tbl"), 1)
    Me.Printer.TopMargin = T * 567
    Me.Printer.LeftMargin = L * 567
    Me.Printer.BottomMargin = B * 567
End Sub

 

هامش تقرير2.rar

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

اولا ننشئ جدول باسم tblMarginsSettings
يحتوى على الجقول الاتية

TopMargin (نوع البيانات: Number)
BottomMargin (نوع البيانات: Number)
LeftMargin (نوع البيانات: Number)
RightMargin (نوع البيانات: Number)

إنشاء نموذج لإدخال إعدادات الهوامش

عناصر التحكم اللازمة لإدخال الهوامش

(مربعات نصية)
txtTopMargin
txtBottomMargin
txtLeftMargin
txtRightMargin

(زر أمر)
btnSaveMargins
الكود

Private Sub btnSaveMargins_Click()
    ' Ensure only one record in tblMarginsSettings
    If DCount("*", "tblMarginsSettings") = 0 Then
        ' If no record, insert a new one
        DoCmd.RunSQL "INSERT INTO tblMarginsSettings (TopMargin, BottomMargin, LeftMargin, RightMargin) VALUES (" & Me.txtTopMargin & ", " & Me.txtBottomMargin & ", " & Me.txtLeftMargin & ", " & Me.txtRightMargin & ")"
    Else
        ' If record exists, update it
        DoCmd.RunSQL "UPDATE tblMarginsSettings SET TopMargin = " & Me.txtTopMargin & ", BottomMargin = " & Me.txtBottomMargin & ", LeftMargin = " & Me.txtLeftMargin & ", RightMargin = " & Me.txtRightMargin
    End If

    MsgBox "Margins settings saved successfully!"
End Sub



إنشاء الوحدة النمطية
لإضافة الدالة العامة 
الكود
 

Public Sub SetReportMargins(rpt As Report, _
                            Optional ByVal DefaultTop As Long = 1440, _
                            Optional ByVal DefaultBottom As Long = 1440, _
                            Optional ByVal DefaultLeft As Long = 1440, _
                            Optional ByVal DefaultRight As Long = 1440)
    ' Default values are set to 1 inch (1440 twips) which is standard for A4 paper
    Dim rs As DAO.Recordset
    On Error GoTo ErrorHandler

    Set rs = CurrentDb.OpenRecordset("SELECT * FROM tblMarginsSettings")

    If Not rs.EOF Then
        rpt.Printer.TopMargin = Nz(rs!TopMargin, DefaultTop)
        rpt.Printer.BottomMargin = Nz(rs!BottomMargin, DefaultBottom)
        rpt.Printer.LeftMargin = Nz(rs!LeftMargin, DefaultLeft)
        rpt.Printer.RightMargin = Nz(rs!RightMargin, DefaultRight)
    Else
        rpt.Printer.TopMargin = DefaultTop
        rpt.Printer.BottomMargin = DefaultBottom
        rpt.Printer.LeftMargin = DefaultLeft
        rpt.Printer.RightMargin = DefaultRight
    End If

    rs.Close
    Set rs = Nothing
    Exit Sub

ErrorHandler:
    MsgBox "Error setting margins: " & Err.Description
    If Not rs Is Nothing Then
        rs.Close
        Set rs = Nothing
    End If
End Sub

 على ان يتم استدعاءه فى التقرير عندف تح التقرير بالشكل التالى 
 

Private Sub Report_Open(Cancel As Integer)
    SetReportMargins Me
End Sub

وبذلك يكون هناك مرونة مع المعلمات الافتراضية للدالة SetReportMargins تتيح تحديد هوامش افتراضية في حال عدم وجود قيم في الجدول

تم استخدام معايير A4
حيث ان القيم الافتراضية للهوامش تعادل 1 بوصة (1440 twips) لكل جانب وهي مناسبة لمقاسات ورق A4

يمكن استدعاء الدالة من أي تقرير بسهولة :yes:

 

باستخدام هذا الكود، ستكون إعدادات الهوامش مرنة وقابلة للتعديل بسهولة، مع التأكد من وجود قيم افتراضية مناسبة عند الحاجة.

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

اولا اعتذر لم انتبه الى رد واجابة والدى الحبيب واستاذى الجليل  ومعلمى القدير الاستاذ @ابوخليل :fff:
يبدو اننى كنت منهمكا فى وضع الاجابة

وبعد مشاهدة اجابة والدى الحبيب يبدو انه اعتمد فى الاجابة على تحويل قيم من سنتيمتر إلى twips

ولذلك اثراء للموضع الطريقة الثانية

اولا ننشئ جدول باسم tblMarginsSettings
يحتوى على الجقول الاتية

TopMargin (نوع البيانات: Number)
BottomMargin (نوع البيانات: Number)
LeftMargin (نوع البيانات: Number)
RightMargin (نوع البيانات: Number)

إنشاء نموذج لإدخال إعدادات الهوامش

عناصر التحكم اللازمة لإدخال الهوامش
(مربعات نصية)
txtTopMargin
txtBottomMargin
txtLeftMargin
txtRightMargin

(زر أمر)
btnSaveMargins
الكود

Private Sub btnSaveMargins_Click()
    ' Ensure only one record in tblMarginsSettings
    If DCount("*", "tblMarginsSettings") = 0 Then
        ' If no record, insert a new one
        DoCmd.RunSQL "INSERT INTO tblMarginsSettings (TopMargin, BottomMargin, LeftMargin, RightMargin) VALUES (" & Me.txtTopMargin & ", " & Me.txtBottomMargin & ", " & Me.txtLeftMargin & ", " & Me.txtRightMargin & ")"
    Else
        ' If record exists, update it
        DoCmd.RunSQL "UPDATE tblMarginsSettings SET TopMargin = " & Me.txtTopMargin & ", BottomMargin = " & Me.txtBottomMargin & ", LeftMargin = " & Me.txtLeftMargin & ", RightMargin = " & Me.txtRightMargin
    End If

    MsgBox "Margins settings saved successfully!"
End Sub


إنشاء الوحدة النمطية
لإضافة الدالة العامة 
الكود

Public Function CmToTwips(cm As Double) As Long
    CmToTwips = cm * 567
End Function

وذلك لتحويل القيم من سنتيمتر إلى twips


 

Public Sub SetReportMargins(rpt As Report, _
                            Optional ByVal DefaultTopCm As Double = 2.54, _
                            Optional ByVal DefaultBottomCm As Double = 2.54, _
                            Optional ByVal DefaultLeftCm As Double = 2.54, _
                            Optional ByVal DefaultRightCm As Double = 2.54)
    ' Convert default values from cm to twips
    Dim DefaultTop As Long
    Dim DefaultBottom As Long
    Dim DefaultLeft As Long
    Dim DefaultRight As Long

    DefaultTop = CmToTwips(DefaultTopCm)
    DefaultBottom = CmToTwips(DefaultBottomCm)
    DefaultLeft = CmToTwips(DefaultLeftCm)
    DefaultRight = CmToTwips(DefaultRightCm)

    Dim rs As DAO.Recordset
    On Error GoTo ErrorHandler

    Set rs = CurrentDb.OpenRecordset("SELECT * FROM tblMarginsSettings")

    If Not rs.EOF Then
        rpt.Printer.TopMargin = CmToTwips(Nz(rs!TopMargin, DefaultTopCm))
        rpt.Printer.BottomMargin = CmToTwips(Nz(rs!BottomMargin, DefaultBottomCm))
        rpt.Printer.LeftMargin = CmToTwips(Nz(rs!LeftMargin, DefaultLeftCm))
        rpt.Printer.RightMargin = CmToTwips(Nz(rs!RightMargin, DefaultRightCm))
    Else
        rpt.Printer.TopMargin = DefaultTop
        rpt.Printer.BottomMargin = DefaultBottom
        rpt.Printer.LeftMargin = DefaultLeft
        rpt.Printer.RightMargin = DefaultRight
    End If

    rs.Close
    Set rs = Nothing
    Exit Sub

ErrorHandler:
    MsgBox "Error setting margins: " & Err.Description
    If Not rs Is Nothing Then
        rs.Close
        Set rs = Nothing
    End If
End Sub



على ان يتم الاستدعاء فى التقرير عند فتح التقرير بالشكل التالى 

Private Sub Report_Open(Cancel As Integer)
    SetReportMargins Me
End Sub


 

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

13 hours ago, ابو جودي said:

اولا ننشئ جدول باسم tblMarginsSettings
يحتوى على الجقول الاتية

TopMargin (نوع البيانات: Number)
BottomMargin (نوع البيانات: Number)
LeftMargin (نوع البيانات: Number)
RightMargin (نوع البيانات: Number)

إنشاء نموذج لإدخال إعدادات الهوامش

عناصر التحكم اللازمة لإدخال الهوامش

(مربعات نصية)
txtTopMargin
txtBottomMargin
txtLeftMargin
txtRightMargin

(زر أمر)
btnSaveMargins
الكود

Private Sub btnSaveMargins_Click()
    ' Ensure only one record in tblMarginsSettings
    If DCount("*", "tblMarginsSettings") = 0 Then
        ' If no record, insert a new one
        DoCmd.RunSQL "INSERT INTO tblMarginsSettings (TopMargin, BottomMargin, LeftMargin, RightMargin) VALUES (" & Me.txtTopMargin & ", " & Me.txtBottomMargin & ", " & Me.txtLeftMargin & ", " & Me.txtRightMargin & ")"
    Else
        ' If record exists, update it
        DoCmd.RunSQL "UPDATE tblMarginsSettings SET TopMargin = " & Me.txtTopMargin & ", BottomMargin = " & Me.txtBottomMargin & ", LeftMargin = " & Me.txtLeftMargin & ", RightMargin = " & Me.txtRightMargin
    End If

    MsgBox "Margins settings saved successfully!"
End Sub



إنشاء الوحدة النمطية
لإضافة الدالة العامة 
الكود
 

Public Sub SetReportMargins(rpt As Report, _
                            Optional ByVal DefaultTop As Long = 1440, _
                            Optional ByVal DefaultBottom As Long = 1440, _
                            Optional ByVal DefaultLeft As Long = 1440, _
                            Optional ByVal DefaultRight As Long = 1440)
    ' Default values are set to 1 inch (1440 twips) which is standard for A4 paper
    Dim rs As DAO.Recordset
    On Error GoTo ErrorHandler

    Set rs = CurrentDb.OpenRecordset("SELECT * FROM tblMarginsSettings")

    If Not rs.EOF Then
        rpt.Printer.TopMargin = Nz(rs!TopMargin, DefaultTop)
        rpt.Printer.BottomMargin = Nz(rs!BottomMargin, DefaultBottom)
        rpt.Printer.LeftMargin = Nz(rs!LeftMargin, DefaultLeft)
        rpt.Printer.RightMargin = Nz(rs!RightMargin, DefaultRight)
    Else
        rpt.Printer.TopMargin = DefaultTop
        rpt.Printer.BottomMargin = DefaultBottom
        rpt.Printer.LeftMargin = DefaultLeft
        rpt.Printer.RightMargin = DefaultRight
    End If

    rs.Close
    Set rs = Nothing
    Exit Sub

ErrorHandler:
    MsgBox "Error setting margins: " & Err.Description
    If Not rs Is Nothing Then
        rs.Close
        Set rs = Nothing
    End If
End Sub

 على ان يتم استدعاءه فى التقرير عندف تح التقرير بالشكل التالى 
 

Private Sub Report_Open(Cancel As Integer)
    SetReportMargins Me
End Sub

وبذلك يكون هناك مرونة مع المعلمات الافتراضية للدالة SetReportMargins تتيح تحديد هوامش افتراضية في حال عدم وجود قيم في الجدول

تم استخدام معايير A4
حيث ان القيم الافتراضية للهوامش تعادل 1 بوصة (1440 twips) لكل جانب وهي مناسبة لمقاسات ورق A4

يمكن استدعاء الدالة من أي تقرير بسهولة :yes:

 

باستخدام هذا الكود، ستكون إعدادات الهوامش مرنة وقابلة للتعديل بسهولة، مع التأكد من وجود قيم افتراضية مناسبة عند الحاجة.

عملت نفس الطريقه دى بس مش شغال معايا عند فتح التقرير بيطلب من ادخل الهوامش

هامش التقرير.accdb

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

8 دقائق مضت, safaa salem5 said:

عملت نفس الطريقه دى بس مش شغال معايا عند فتح التقرير بيطلب من ادخل الهوامش

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

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

18 minutes ago, ابو جودي said:

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

تمام انا غيرت مصدر بيانات التقرير 

بس القيم اللى انا حطاها فى الفورم مش بتأثر عالتقرير

حاول حضرتك تغير فى القيم الموجوده هتلاقى شكل التقرير ثابت مش بيحصل تغيير للهامش اتمنى حضرتك تعدل الملف  جزاك الله خيرا

هامش التقرير.accdb

تم تعديل بواسطه safaa salem5
رابط هذا التعليق
شارك

انا جديده بالمنتدى

وجدة لكي يا صفاء 

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

 

اتوقع تشغيل التقارير بحدث التقرير 

    Dim DefaultTop As Long
    Dim DefaultBottom As Long
    Dim DefaultLeft As Long
    Dim DefaultRight As Long
؟! Chack data tablet (1)

Function into Report At Top And At Bottom At Mid >> .. How only Building Function Control report ?!

sorry for Help U Function Error No Error 

Now Only Cod On_Click_Button

'==================================(OPen_Control Report = ( acHidden))
 

 

12.PNG

تحكم بأعدادة طباعة وهوامش التقرير.rar

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

7 minutes ago, hanan_ms said:

انا جديده بالمنتدى

وجدة لكي يا صفاء 

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

 

اتوقع تشغيل التقارير بحدث التقرير 

    Dim DefaultTop As Long
    Dim DefaultBottom As Long
    Dim DefaultLeft As Long
    Dim DefaultRight As Long
؟! Chack data tablet (1)

Function into Report At Top And At Bottom At Mid >> .. How only Building Function Control report ?!

sorry for Help U Function Error No Error 

Now Only Cod On_Click_Button

'==================================(OPen_Control Report = ( acHidden))
 

 

12.PNG

تحكم بأعدادة طباعة وهوامش التقرير.rar 54.4 kB · 0 downloads

تسلمى اختى حنان انا عايزه اعمل فورم زى بتاع الاكسيس كدا متشكره جدا 

@ابو جودي ان شاء الله هيرد ويكمل جميله بس اكيد هو مشغول دلوقتى  كان الله بالعون

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

35 دقائق مضت, hanan_ms said:

انا جديده بالمنتدى

وجدة لكي يا صفاء 
 

اهلا بيكى يا افندم وفكرة حضرتك حلوة جدا فكرتنى بشئ انتظروا وسوف اوافيكم بأفكار رائعة ان شاء الله

 

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

 كود يعمل ولكن تتحرك صفحة التقرير 

ما يضبط الهوامش اما اعلى او اسفل عند اختيار كل الحقول 0

كيف اضبط تحجيم الهوامش 

تختلف ارقام المسجلة باعدادة الصفحة

@ابو جودي 🌹 استاذ متمرس 

اشكرك جدا سأضيف الدالة بالمكتبة

0.PNG

1.PNG

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

9 دقائق مضت, hanan_ms said:

تختلف ارقام المسجلة باعدادة الصفحة

 

بصى يا باش مهندسة  حنان خلينا نتفق على شئ 
الاكسس لا يتعامل بمقياس السنتيمتر فى القياسات ولكن يتعامل بالـ Twips

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

طيبا علشان نحول من انا كتبت الدالة دى 

 

Public Function CmToTwips(cm As Double) As Long
    CmToTwips = cm * 567
End Function

فطبيعيى ان حضرتك لو كتبتى ارقام غير منطقية تحصلى على نتيجة غير منطقية 
لذلك انا افضل فكرة حضرتك DoCmd.RunCommand acCmdPageSetup
 

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

  • أفضل إجابة
رابط هذا التعليق
شارك

للتوضيح

المرفق السابق بمجرد إضافة أي تقارير تظهر بطريقة الية ضمن قائمة التقارير

وللأمانة العلمية والأخلاقية حتى يأخذ كل ذي حق حقه

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

اسال الله تعالى ان يرزقها وكل اساتذتنا الذين نتعلم منهم خير الجزاء وان يتقبل ما يقدمونه في موازين أعمالهم صدقة جارية وعلم ينتفع به اللهم امين امين امين

انا فقط اضفت وقمت ببعض التعديلات ليتناسب مع النواتان 32,64 ولاضفاء مرونة اكبر والتى تناسب تطلعاتى وقتها

 

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

🌹 @ابو جودي مشكور جدا استاذي  

CmToTwips فكرتك ممتازة بتحكم لكل هوامش التقارير بستخدام

  من غير تغير بإعداداة الصفحة لكل تقرير

if Dlookup name Report  ,Number=Number then

ولكن هل يعمل على تغير التقرير بدل من الطول الى (العرض : عرض التقرير بوضع الاوفقي )

Public Function CmToTwips2(cm As Double) As Long
    CmToTwips2 = cm * ???'567
End Function

جاري التجربة

❤️

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

 🌹🌹 عدلة مرفقك

كان الخطأ عند\ تغير هوامش تغير حجم عرض الحقل في آخر اليمين 

فقط كود تحريك الحقول ان كان صفر فتتحرك سنتيمتر 8.2 

واذا كانت 1 او 2 

تقل سنتيمتر عرض التقريك بتحرك الحقل ليصل الى 7 او 6 او 5 فقط

 وتم اضافة الاطار لكل التقارير واماكنية تحجيم الاطار والغاء

واضافة قائمة بكج التقارير 

====================================================

هل يوجد دالة لتحجم آخر حقل لكل تقرير من الرأس الى تذليل الصفحة آخر اليمين ؟

(لتشغيل هوامش التقرير)

في الوضع الحالي سأستخدم تقرير محجم بوضع التصميم للتشغيل الهوامش

وتختلف التوسع بالحقل اذا كان التقرير بوضع الطولي او العرض (افقي )

 @ابو جودي اشكر كثيرا استاذي

🌹❤️

x1.PNG

x2.PNG

x3.PNG

x4.PNG

Full Control Of Print Report التحكم في الطابعة وخصائصها طباعة التقارير.rar

تم تعديل بواسطه hanan_ms
  • Thanks 1
رابط هذا التعليق
شارك

8 دقائق مضت, hanan_ms said:

 🌹🌹 عدلة مرفقك

 

با نهار ابيض وجالك قلب تعدلى مرفقى بسهولة كده :mad: انتى بتهزرى يا باش مهندسة لا وبتقوليها فى وشى كمان

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

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

وشرف لى يا باش مهندسة مشاركة حضرتك بجد والله 

 

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

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



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

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

Important Information