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

استفسار عن طريقة انشاء تقرير متعدد الشروط


Ahmed.IQ

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

السلام عليكم ورحمة الله وبركاته ,,

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

 

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

Public frm As String
Function IsFormLoaded(StrForm As String) As Boolean
    If frm = StrForm Then
        IsFormLoaded = True
        Exit Function
    End If
End Function

هذا المديول الي عامله يعمل على انه يتاكد من ان الفورم الي مفتوح حاليا مين وهوا شغال وانا عامل كود عن فتح النموذج وهما ثلاثة نماذج بقول فيه ان frm = form.name هنا راح نحصل على اسم الفورم

في الشرط داخل الاستعلام انا كاتب الجملة بالشكل التالي

IIf(IsFormLoaded(F_Asset_Addnew),[Forms]![F_Asset_Addnew]![AssetID],
IIf(IsFormLoaded(F_Asset_Addnew_withoutfilter),[Forms]![F_Asset_Addnew_withoutfilter]![AssetID],
[Forms]![F_Asset_Edit]![AssetID]))

المشكلة هيا اني لما افعل الاستعلام مثل احتاج الى طباعة التقرير يقوم بالتعامل مع الشرط على انه تم تحقيقة كله ويبداء يظهر لي حقل ادخل قيمة للنموذجين الغير مفتوحين لو فرضنا انا كنت فاتح النموذج F_Asset_Addnew فاسيظهر لي مربع ادخال ويطلب مني ان ادخل القيمة في النموذج الاخر [Forms]![F_Asset_Addnew_withoutfilter]![AssetID] وايضا يظهر لي ان ادخل القيمة في النموذج الاخير [Forms]![F_Asset_Edit]![AssetID] 

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

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

وعليكم السلام ورحمه الله وبركاته

الله اكرم وانت طيب اخى احمد

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

قم بانشاء مديول

Public intID As Long

Function goID() As Long
    goID = intID
End Function

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

intID = Me.ID

وفى الاستعلام وفى المعايير لحقل المعرف

goID()

جرب ووافنى بالنتيجه

بالتوفيق

تم تعديل بواسطه احمد الفلاحجي
رابط هذا التعليق
شارك

وعليكم السلام

دالة التحقق من النموذج النشط

Function IsFormLoaded(StrForm As String) As Boolean
Dim frm As Form
For Each frm In Forms
    If frm.Name = StrForm Then
        IsFormLoaded = True
        Exit Function
    End If
Next
End Function

نعمل سبروتين لفتح التقرير حسب المعيار لديك.. نقوم باستدعائه من زر في النماذج الثلاث

Sub openR()
If IsFormLoaded("F_Asset_Addnew") Then
    DoCmd.OpenReport "Asset_AddnewR", acViewPreview, "AssetID=" & [Forms]![F_Asset_Addnew]![AssetID]
ElseIf IsFormLoaded("F_Asset_Addnew_withoutfilter") Then
     DoCmd.OpenReport "Asset_AddnewR", acViewPreview, "AssetID=" & [Forms]![F_Asset_Addnew_withoutfilter]![AssetID]
Else
      DoCmd.OpenReport "Asset_AddnewR", acViewPreview, "AssetID=" & [Forms]![F_Asset_Edit]![AssetID]
End If
End Sub

لاني حاولت مع الاستعلام فلم افلح

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

55 دقائق مضت, Ahmed.IQ said:

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

جزاك الله خيرا اخى ومهندسنا العزيز @Eng.Qassim ع مشاركتك معنا الحلول واثراء الموضوع 🌹

ويوجد طريقه اخرى من باب اثراء الموضوع وتنوع الحلول باستخدام  TempVar

انشى مديول جديد وضع تعريف المتغير فقط

Public intID As TempVar

ثم فى حدث الحالى للنماذج قم بالاسناد كالتالى

TempVars!intID = Me.ID.Value

ثم فى الاستعلام وفى المعيار للمعرف

[TempVars]![intID]

بالتوفيق

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

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

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



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

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

Important Information