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

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

قام بنشر

السلام عليكم

تكثر الحاجة الى اخراج تقرير حسب حقول محددة يختارها المستخدم

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

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

لذا عملت على اعداد مثال صغير وهو عبارة عن جدول ونموذج وتقرير

اولا

عمل قائمة في النموذج  يتم فيها عرض حقول الجدول عند تحميل النموذج ... وهذه الاكواد هي المسؤولة  :

Private Sub Form_Load()
    Dim dbs As DAO.Database
    Dim tbl As DAO.TableDef
    Dim sCaption As String
    DoCmd.Restore
    Set dbs = CurrentDb
    Set tbl = dbs.TableDefs("table1")
    For Each fld In tbl.Fields
    sCaption = ""
    On Error Resume Next
    sCaption = fld.Properties("Caption")
     On Error GoTo 0
    lstFields.AddItem fld.Name & ";" & sCaption
    Next fld
   Set dbs = Nothing
  Set tbl = Nothing
 End Sub

 

ثانيا عملت زر  لإعداد الحقول في التقرير ثم فتحه ، وخلف هذا الزر يتم تنفيذ هذه الشفرة

Dim i As Integer
    Dim txt As TextBox
    Dim lbl As Label
    Dim intSelectedCount As Integer
    Dim lngWidth As LoadPictureConstants
    Dim intSelectedNo As Integer

    With lstFields
        If .ItemsSelected.Count = 0 Then
            MsgBox "يجب اختيار حقل واحد على الأقل", vbExclamation, "خطأ"
            Exit Sub
        End If
    DoCmd.OpenReport "Rep1", acViewDesign, , , acHidden
        intSelectedCount = .ItemsSelected.Count
        lngWidth = Reports("Rep1").Width / intSelectedCount
        Reports("Rep1").Section("PageHeaderSection").Height = 310
        Reports!Rep1!Label2.Caption = Nz(Me.Textlabl)
        Reports("Rep1").Section("Detail").Height = 310
        
       intSelectedNo = 0
        For i = 0 To .ListCount - 1
            If .Selected(i) Then
                Set lbl = CreateReportControl("Rep1", acLabel, acPageHeader, , , intSelectedNo * (lngWidth + 50), 5, lngWidth, 300)
                lbl.Caption = .Column(1, i)
                lbl.BackStyle = 1
                lbl.BackColor = RGB(200, 200, 200)
                lbl.BorderStyle = 1
                lbl.FontBold = True
                lbl.TextAlign = 2
                Set txt = CreateReportControl("Rep1", acTextBox, acDetail, , .Column(0, i), intSelectedNo * (lngWidth + 50), 5, lngWidth, 300)
                txt.BorderStyle = 1
                txt.TextAlign = 2
               intSelectedNo = intSelectedNo + 1
            End If
        Next i
    End With
    DoCmd.OpenReport "Rep1", acViewReport

ملحوظات :

جعلت زر الخروج في التقرير يغلق التقرير ( من غير حفظ ) متجاوزا رسالة تأكيد الحفظ

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

ختاما لا تنسوني من دعواتكم الصالحة واتمنى ان تجدوا فيه الفائدة والمتعة

 

اختيار حقول التقرير.rar

  • Like 8
  • Thanks 2
قام بنشر

أحسنت وأبدعت معلمنا @ابوخليل ،

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

ولكن هذه المرة في التقارير . وهذا يجعل الأمر متكاملاً :smile:

 

جزاك الله كل الخير لما صنعت :wub:

  • Thanks 1
قام بنشر
1 ساعه مضت, ابوخليل said:
DoCmd.OpenReport "Rep1", acViewDesign, , , acHidden

تمام يا استاذنا بارك فيكم ولكم

ولكن وجب التنويه انه عند تحويل القاعدة الى accde فلن يتم تنفيذ الامر

  • Like 1
قام بنشر
37 دقائق مضت, شايب said:

تمام يا استاذنا بارك فيكم ولكم

ولكن وجب التنويه انه عند تحويل القاعدة الى accde فلن يتم تنفيذ الامر

كما تفضلت استاذنا .. فلكل شيء ضريبته

في هذه الايام انهج نهجا مختلفا .. حيث رأيت ان accdr  تقوم بالمهمة مع بعض الاحتياطات ، وتوفر الكثير من التوافق الذي ينعدم احيانا في accde

 

  • Moosak pinned this topic
قام بنشر

ما شاء الله 

جهد عظيم وأفكار مبدعه

لفتح مجال الإبداع أمام الكافة

سلمت يداك يا رجل 

قام بنشر

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

ولكن لي استفسار

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

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

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

قام بنشر
في 17‏/1‏/2024 at 15:37, ابوخليل said:

السلام عليكم

تكثر الحاجة الى اخراج تقرير حسب حقول محددة يختارها المستخدم

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

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

لذا عملت على اعداد مثال صغير وهو عبارة عن جدول ونموذج وتقرير

اولا

عمل قائمة في النموذج  يتم فيها عرض حقول الجدول عند تحميل النموذج ... وهذه الاكواد هي المسؤولة  :

Private Sub Form_Load()
    Dim dbs As DAO.Database
    Dim tbl As DAO.TableDef
    Dim sCaption As String
    DoCmd.Restore
    Set dbs = CurrentDb
    Set tbl = dbs.TableDefs("table1")
    For Each fld In tbl.Fields
    sCaption = ""
    On Error Resume Next
    sCaption = fld.Properties("Caption")
     On Error GoTo 0
    lstFields.AddItem fld.Name & ";" & sCaption
    Next fld
   Set dbs = Nothing
  Set tbl = Nothing
 End Sub

 

ثانيا عملت زر  لإعداد الحقول في التقرير ثم فتحه ، وخلف هذا الزر يتم تنفيذ هذه الشفرة

Dim i As Integer
    Dim txt As TextBox
    Dim lbl As Label
    Dim intSelectedCount As Integer
    Dim lngWidth As LoadPictureConstants
    Dim intSelectedNo As Integer

    With lstFields
        If .ItemsSelected.Count = 0 Then
            MsgBox "يجب اختيار حقل واحد على الأقل", vbExclamation, "خطأ"
            Exit Sub
        End If
    DoCmd.OpenReport "Rep1", acViewDesign, , , acHidden
        intSelectedCount = .ItemsSelected.Count
        lngWidth = Reports("Rep1").Width / intSelectedCount
        Reports("Rep1").Section("PageHeaderSection").Height = 310
        Reports!Rep1!Label2.Caption = Nz(Me.Textlabl)
        Reports("Rep1").Section("Detail").Height = 310
        
       intSelectedNo = 0
        For i = 0 To .ListCount - 1
            If .Selected(i) Then
                Set lbl = CreateReportControl("Rep1", acLabel, acPageHeader, , , intSelectedNo * (lngWidth + 50), 5, lngWidth, 300)
                lbl.Caption = .Column(1, i)
                lbl.BackStyle = 1
                lbl.BackColor = RGB(200, 200, 200)
                lbl.BorderStyle = 1
                lbl.FontBold = True
                lbl.TextAlign = 2
                Set txt = CreateReportControl("Rep1", acTextBox, acDetail, , .Column(0, i), intSelectedNo * (lngWidth + 50), 5, lngWidth, 300)
                txt.BorderStyle = 1
                txt.TextAlign = 2
               intSelectedNo = intSelectedNo + 1
            End If
        Next i
    End With
    DoCmd.OpenReport "Rep1", acViewReport

ملحوظات :

جعلت زر الخروج في التقرير يغلق التقرير ( من غير حفظ ) متجاوزا رسالة تأكيد الحفظ

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

ختاما لا تنسوني من دعواتكم الصالحة واتمنى ان تجدوا فيه الفائدة والمتعة

 

اختيار حقول التقرير.rar 31.7 kB · 45 downloads

احسنت استاذنا ومعلمنا الرائع

قام بنشر (معدل)
في 17‏/1‏/2024 at 14:37, ابوخليل said:

السلام عليكم

تكثر الحاجة الى اخراج تقرير حسب حقول محددة يختارها المستخدم

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

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

لذا عملت على اعداد مثال صغير وهو عبارة عن جدول ونموذج وتقرير

اولا

عمل قائمة في النموذج  يتم فيها عرض حقول الجدول عند تحميل النموذج ... وهذه الاكواد هي المسؤولة  :

Private Sub Form_Load()
    Dim dbs As DAO.Database
    Dim tbl As DAO.TableDef
    Dim sCaption As String
    DoCmd.Restore
    Set dbs = CurrentDb
    Set tbl = dbs.TableDefs("table1")
    For Each fld In tbl.Fields
    sCaption = ""
    On Error Resume Next
    sCaption = fld.Properties("Caption")
     On Error GoTo 0
    lstFields.AddItem fld.Name & ";" & sCaption
    Next fld
   Set dbs = Nothing
  Set tbl = Nothing
 End Sub

 

ثانيا عملت زر  لإعداد الحقول في التقرير ثم فتحه ، وخلف هذا الزر يتم تنفيذ هذه الشفرة

Dim i As Integer
    Dim txt As TextBox
    Dim lbl As Label
    Dim intSelectedCount As Integer
    Dim lngWidth As LoadPictureConstants
    Dim intSelectedNo As Integer

    With lstFields
        If .ItemsSelected.Count = 0 Then
            MsgBox "يجب اختيار حقل واحد على الأقل", vbExclamation, "خطأ"
            Exit Sub
        End If
    DoCmd.OpenReport "Rep1", acViewDesign, , , acHidden
        intSelectedCount = .ItemsSelected.Count
        lngWidth = Reports("Rep1").Width / intSelectedCount
        Reports("Rep1").Section("PageHeaderSection").Height = 310
        Reports!Rep1!Label2.Caption = Nz(Me.Textlabl)
        Reports("Rep1").Section("Detail").Height = 310
        
       intSelectedNo = 0
        For i = 0 To .ListCount - 1
            If .Selected(i) Then
                Set lbl = CreateReportControl("Rep1", acLabel, acPageHeader, , , intSelectedNo * (lngWidth + 50), 5, lngWidth, 300)
                lbl.Caption = .Column(1, i)
                lbl.BackStyle = 1
                lbl.BackColor = RGB(200, 200, 200)
                lbl.BorderStyle = 1
                lbl.FontBold = True
                lbl.TextAlign = 2
                Set txt = CreateReportControl("Rep1", acTextBox, acDetail, , .Column(0, i), intSelectedNo * (lngWidth + 50), 5, lngWidth, 300)
                txt.BorderStyle = 1
                txt.TextAlign = 2
               intSelectedNo = intSelectedNo + 1
            End If
        Next i
    End With
    DoCmd.OpenReport "Rep1", acViewReport

ملحوظات :

جعلت زر الخروج في التقرير يغلق التقرير ( من غير حفظ ) متجاوزا رسالة تأكيد الحفظ

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

ختاما لا تنسوني من دعواتكم الصالحة واتمنى ان تجدوا فيه الفائدة والمتعة

 

اختيار حقول التقرير.rar 31.7 kB · 47 downloads

الخبير الفاضل 

شكرا على ابداعاتك ممكن لوتكرمت جعل التقرير كما بالصورة  رقم 2

 

حتى تشبة نتيجة التحليل

 

 

2.png

تم تعديل بواسطه jo_2010
قام بنشر
15 ساعات مضت, jo_2010 said:

الخبير الفاضل 

شكرا على ابداعاتك ممكن لوتكرمت جعل التقرير كما بالصورة  رقم 2

حتى تشبة نتيجة التحليل

 

اعتذر منك اخي الكريم

المثال تم تصميمه لحاجة محددة .. وهي اخراج  تقرير حسب حقول محددة يختارها المستخدم  

علما انه يمكن التعديل وتطوير المثال من خلال النموذج  كــــ  :

- اضافة حقول في النموذج يتم من خلالها فرز و تصفية الجدول

- ترتيب الحقول في التقرير حسب الرغبة من خلال توظيف استعلام وسيط

- ضبط اتجاه مربع القائمة .

 

قام بنشر

الله يبارك بعمرك ويحفظك استاذي الفاضل ابو خليل جزاك الله خيرا اللهم ربي يجعل اعمالك في ميزان حسناتك اللهم أمين يارب العالمين 

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