-
Posts
9981 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
406
Community Answers
-
jjafferr's post in مناداة المتغير في الاستعلام عن طريق موديول آخر was marked as the answer
وعليكم السلام 🙂
نعم ، جوابك ، هو قصدي مما قلته انا ،
اما TempVars فهو موجود في الاكسس 2007 فما فوق ، وهو جدا مفيد واستعماله جدا سهل ، ولا يحتاج الى موديول لمناداته .
جعفر
-
jjafferr's post in طلب كود تحديد موقع النموذ الفرعي وارتفاعه وعرضه was marked as the answer
الحمدلله 🙂
1. اذا الارقام في اعدادات الكائن فيه cm (ما اعرف بالاكسس العربي شو يكتب!! ) فانت بالسنتيمتر ، واذا فيه " فانتبنظام البوصة ، او انظر الى اعدادات النظام :
.
2. مالك شغل في الجهاز الآخر ، اشتغل على نظام جهازك ، والاكسس تلقائيا يغيره لأي نظام آخر 🙂
هذا نظامي:
.
مثال ، اريد ان اضع التقرير الفرعي هنا :
.
فاستعملت حدث الزر امر3 :
.
والنتيجة :
.
تفضل انت ، افتح المرفق وانقر على الزر واخبرنا النتيجة 🙂
جعفر
1295.mov.accdb.zip
-
jjafferr's post in السلام عليكم ..كيف يمكن فصل الارقام التي بعد / من اليمين في المثال المرفق was marked as the answer
وعليكم السلام 🙂
تفضلي 🙂
.
.
والاستعلام:
SELECT numbers.textnumbers, Mid([textnumbers],1,InStr([textnumbers],"/")-1) AS L, Mid([textnumbers],InStr([textnumbers],"/")+1) AS R FROM numbers;
جعفر
-
jjafferr's post in سؤال يخص التقرير was marked as the answer
وعليكم السلام بشمهندس 🙂
عملت لك برنامج خاص 🙂
جعفر
-
jjafferr's post in عمل عدة تقارير فى صفحة واحدة was marked as the answer
تفضل 🙂
التقرير مبني على اساس الاستعلام qry_Group ، والذي يمكنك وضع المعايير فيه ،
هكذا التقرير قي وضع التصميم :
.
وعلى حسب العرض المتوفر ، نعمل عدد الاعمدة :
.
والنتيجة :
.
جعفر
1290.السجل.accdb.zip
-
jjafferr's post in استعلام تاريخ متتالي was marked as the answer
السلام عليكم 🙂
ومثل ما قال الاخ Kanory ، وببعض التعديل على الكود ليتناسب مع اسماء الحقول 🙂
جعفر
1274.t_fdate.mdb.zip
-
jjafferr's post in استعلام تاريخ متتالي was marked as the answer
السلام عليكم 🙂
ومثل ما قال الاخ Kanory ، وببعض التعديل على الكود ليتناسب مع اسماء الحقول 🙂
جعفر
1274.t_fdate.mdb.zip
-
jjafferr's post in استعلام تاريخ متتالي was marked as the answer
السلام عليكم 🙂
ومثل ما قال الاخ Kanory ، وببعض التعديل على الكود ليتناسب مع اسماء الحقول 🙂
جعفر
1274.t_fdate.mdb.zip
-
jjafferr's post in تكبير النموذج بدون تغطية شريط قائمة إبدأ was marked as the answer
استعمل نماذج عادية بدون لمس هذه الاعدادات ، لأن الازرار التي تظهر في البرنامج هي ازرار البرنامج وليس النماذج ،
-
jjafferr's post in ماهو بديل الأمر Refresh was marked as the answer
السلام عليكم 🙂
تفضل 🙂
.
واستعمل الاستعلام qry_Group_Shifts_by_Dates كمصدر بيانات ، وتقدر تعمل به التقرير او النموذج الذي تشاء.
جعفر
1281.4.FRm_Refresh.accdb.zip
-
jjafferr's post in مساعدة فى تطبيق DCOUNT داخل استعلام was marked as the answer
السلام عليكم 🙂
اولا خليني ادافع عن نفسي واخبرك سبب التأخير 🙂
الجدول الاول مستحيل تكون نتائجة مثل ما هو موضح في الجدول الثاني ، لأن الفرع ليس نفسه في كل السجلات ، بينما الجمع في الجدول الثاني كان على اعتبار ان جميع الفروع هي نفسها (شوف اسم الفروع اللي عليها السهم ، فهي مختلفة) 🙂
وهذا اخذ مني بقية الشعر اللي على راسي ، من كثر ما حكيت رأسي بالمعادلات والنتائج الخطأ 😁
.
والان الى الحل:
1. عملت استعلام مجاميع لكل مجموعة ،المجموعة الاولى للتاريخ ، والثانية للشهر ، بينما الاستعلام الثالث هو لحقول الجدول :
.
والنتيجة
.
وعملنا استعلام اخير لجمع هذه الاستعلامات الثلاث:
.
والنتيجة
.
جعفر
1285.DCOUNT.mdb.zip
-
jjafferr's post in مساعدة فى تطبيق DCOUNT داخل استعلام was marked as the answer
السلام عليكم 🙂
اولا خليني ادافع عن نفسي واخبرك سبب التأخير 🙂
الجدول الاول مستحيل تكون نتائجة مثل ما هو موضح في الجدول الثاني ، لأن الفرع ليس نفسه في كل السجلات ، بينما الجمع في الجدول الثاني كان على اعتبار ان جميع الفروع هي نفسها (شوف اسم الفروع اللي عليها السهم ، فهي مختلفة) 🙂
وهذا اخذ مني بقية الشعر اللي على راسي ، من كثر ما حكيت رأسي بالمعادلات والنتائج الخطأ 😁
.
والان الى الحل:
1. عملت استعلام مجاميع لكل مجموعة ،المجموعة الاولى للتاريخ ، والثانية للشهر ، بينما الاستعلام الثالث هو لحقول الجدول :
.
والنتيجة
.
وعملنا استعلام اخير لجمع هذه الاستعلامات الثلاث:
.
والنتيجة
.
جعفر
1285.DCOUNT.mdb.zip
-
jjafferr's post in مساعدة فى تطبيق DCOUNT داخل استعلام was marked as the answer
السلام عليكم 🙂
اولا خليني ادافع عن نفسي واخبرك سبب التأخير 🙂
الجدول الاول مستحيل تكون نتائجة مثل ما هو موضح في الجدول الثاني ، لأن الفرع ليس نفسه في كل السجلات ، بينما الجمع في الجدول الثاني كان على اعتبار ان جميع الفروع هي نفسها (شوف اسم الفروع اللي عليها السهم ، فهي مختلفة) 🙂
وهذا اخذ مني بقية الشعر اللي على راسي ، من كثر ما حكيت رأسي بالمعادلات والنتائج الخطأ 😁
.
والان الى الحل:
1. عملت استعلام مجاميع لكل مجموعة ،المجموعة الاولى للتاريخ ، والثانية للشهر ، بينما الاستعلام الثالث هو لحقول الجدول :
.
والنتيجة
.
وعملنا استعلام اخير لجمع هذه الاستعلامات الثلاث:
.
والنتيجة
.
جعفر
1285.DCOUNT.mdb.zip
-
jjafferr's post in التعديل على كود مسار حفظ ملف بصيغة PDF الى سطح المكتب was marked as the answer
السلام عليكم 🙂
قمت بدمج دالة اخوي ابوخليل الى برنامجك 🙂
Private Sub Command44_Click() Dim reportName As String Dim fileName As String Dim criteria As String reportName = "r_buy" fileName = GetDesktop & "\" & "r_buy" & ".pdf" criteria = "masterid='" & masterid & "'" DoCmd.OpenReport reportName, acViewPreview, , criteria, acHidden DoCmd.OutputTo acOutputReport, reportName, acFormatPDF, fileName DoCmd.Close acReport, reportName, acSaveNo End Sub Function GetDesktop() As String Dim oWSHShell As Object Set oWSHShell = CreateObject("WScript.Shell") GetDesktop = oWSHShell.SpecialFolders("Desktop") Set oWSHShell = Nothing End Function .
جعفر
-
jjafferr's post in طلب طباعة على صفحة A4 was marked as the answer
وعليكم السلام 🙂
نعم ممكن ، ولكن ليس الطباعة من الاكسس ، ولكن بتصدير البيانات الى ملف pdf او اكسل ،
وهناك تستطيع ان تطبع على صفحة واحدة 🙂
جعفر
-
jjafferr's post in مطلوب كود فى قاعدة IF was marked as the answer
تفضل 🙂
1. اضفنا الزر ، وحقل آخر ، يأخذ استعلام الالحاقي بأخذ قيمته (اقرأ ملاحظات تفاصيل الكود ) :
.
2. هذا كود الحدث على الزر :
Private Sub cmd_Append_Click() 'نأخذ اكبر قيمة من الجدول B Me.Which_Invoice_no = DMax("[Invoice_no]", "A") 'نعمل مقارنة بين القيمتين ، ونأخذ الاكبر If Me.Invoice_no > Me.Which_Invoice_no Then Me.Which_Invoice_no = Me.Invoice_no End If DoCmd.SetWarnings False 'نضيف هذه القيمة والتاريخ الى الجدول A DoCmd.OpenQuery "qry_Append_to_tbl_A" 'نحذف هذا السجل من الجدول B DoCmd.OpenQuery "qry_Delete_from_tbl_B" DoCmd.SetWarnings True Me.Requery End Sub .
3. هذا استعلام الالحاقي الى الجدول A
.
4. وهذا استعلام الحذف من الجدول B
.
ولكن اذا تأخذ رأيي ، فلا داعي لوجود جدولين ، واستعلام الحاقي وآخر حذف ، وكود وووو ،
فقط استعمل جدول واحد ، مثلا الجدول A ، واضف اليه حقل جديد بإسم "هل تم التدقيق" ، نوع نعم/لا ،
بحيث المدقق يعمل اشارة صح على السجل ، بأنه تم تدقيقه ، وبهذه البساطة 🙂
جعفر
1283.New Microsoft Access.accdb.zip
-
jjafferr's post in لما وضعت كود لالغاء رسالة ادخل قيمه معلمه ... اصبح البحث مش شغال (معدل) was marked as the answer
وعليكم السلام 🙂
هذا لأن الاستعلام مصدر بيانات النموذج الفرعي ، لا يوجد فيه معيار التصفية ، فالظاهر انك حذفته بالخطأ 🙂
.
جعفر
-
jjafferr's post in كيف نأخذ التاريخ من أول سجل وأخر سجل ونضعهم في رأس الصفحة للتقرير was marked as the answer
السلام عليكم 🙂
في الواقع ، هذا السؤال من الاسئلة التي تُثار بين الحينه والاخرى ،
واليك السبب في عدم امكانية الحصول على قيمة ذيل الصفحة ، في رأس الصفحة :
التقرير عندك فيه 3 اقسام :
.
خلينا نشوف قيم التاريخ لصفحة:
.
والآن خلينا نشوف التاريخ ، بالطريقة اللي اقسام التقرير تشوفه ، بإستخدام حدث التنسيق لكل قسم:
Private Sub PageHeaderSection_Format(Cancel As Integer, FormatCount As Integer) Debug.Print "Header= " & Me.Edate End Sub Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer) Debug.Print " Detail= " & Me.Edate End Sub Private Sub PageFooterSection_Format(Cancel As Integer, FormatCount As Integer) Debug.Print "Footer= " & Me.Edate Debug.Print End Sub .
والنتيجة لصفحتين :
Header= 18-Oct-20
Detail= 18-Oct-20
Detail= 19-Oct-20
Detail= 20-Oct-20
Detail= 21-Oct-20
Detail= 22-Oct-20
Detail= 23-Oct-20
Detail= 24-Oct-20
Detail= 25-Oct-20
Detail= 26-Oct-20
Detail= 27-Oct-20
Detail= 28-Oct-20
Detail= 29-Oct-20
Detail= 30-Oct-20
Detail= 31-Oct-20
Detail= 01-Nov-20
Detail= 02-Nov-20
Detail= 03-Nov-20
Detail= 04-Nov-20
Detail= 05-Nov-20
Detail= 06-Nov-20
Detail= 07-Nov-20
Detail= 08-Nov-20
Footer= 07-Nov-20
Header= 08-Nov-20
Detail= 08-Nov-20
Detail= 09-Nov-20
Detail= 10-Nov-20
Detail= 11-Nov-20
Detail= 12-Nov-20
Detail= 13-Nov-20
Detail= 14-Nov-20
Detail= 15-Nov-20
Detail= 14-Jan-21
Detail= 15-Jan-21
Detail= 16-Jan-21
Detail= 17-Jan-21
Detail= 18-Jan-21
Detail= 19-Jan-21
Detail= 20-Jan-21
Detail= 21-Jan-21
Detail= 22-Jan-21
Detail= 23-Jan-21
Detail= 24-Jan-21
Detail= 25-Jan-21
Detail= 26-Jan-21
Detail= 27-Jan-21
Footer= 26-Jan-21
.
من هنا نلاحظ ان رأس الصفحة يرى اول سجل ، بينما ذيل الصفحة يرى آخر سجل ، والتقرير يطبع / يُظهر رأس الصفحة قبل ان تكون البيانات وصلت الى ذيل الصفحة (يعني ذيل الصفحة لا يحتوي على اي قيمة حينها ، لما رأس الصفحة يحصل على القيمة) ، لهذا سبب ما نحصل على التاريخين معا في رأس الصفحة !!
-------------------------------------------------------------------------------------------------------
الآن وبعد ان عرفنا طريقة عمل التقرير ، خلينا نستفيد منه في عمل المطلوب :
خلينا نفتح التقرير بطريقة مخفية ، نأخذ قيمة سجل رأس صفحة التقرير وذيل صفحة التقرير لكل صفحة ، نحفظهم في مصفوفة Array ، ثم نفتح التقرير بالطريقة العادية ونأخذ بيانات رأس وذيل التقرير من المصفوفة ، ونضعهم في التقرير ، في رأس الصفحة 🙂
1. عمل نموذج لحصر البيانات بين قيمتين (مع اننا لسنا بحاجة الى هذه الخطوة ، ولكن لأن جدولك في سجلات بدون قيم تواريخ ، فهذا يعمل خلل في الكود) ،
ونعمل استعلام يصفي بيانات الجدول حسب تواريخ النموذج ، ويكون هذا الاستعلام مصدر بيانات التقرير:
.
2. النقر على زر فتح التقرير في النموذج ، يحتوي على هذا الكود :
والذي يعمل مصفوفة لـ 100 صفحة في التقرير (اذا تقريرك يحتوي على صفحات اكثر ، فقط اجعل هذا الرقم اكبر ، ما يضر اذا تركته = 200 او اكثر)
'accept adding dates Add_Dates = True 'initilize the arrays with a larg number of pages ReDim Fd(100) 'first E_date ReDim Ld(100) 'last E_date 'open the Report in Hidden mode, to put the E_dates in an array DoCmd.OpenReport "rpt_chfit", acViewPreview, , , acHidden 'close the Hidden Report DoCmd.Close acReport, "rpt_chfit" 'stop adding dates Add_Dates = False 'now open the Report in the normal way DoCmd.OpenReport "rpt_chfit", acViewPreview .
وهناك وحدة نمطية تحتفظ بقيم المصفوفة ، حتى تكون متوفرة لجميع كائنات البرنامج:
Option Compare Database Option Explicit Public Add_Dates As Boolean Public Fd() As Date 'first E_date Public Ld() As Date 'last E_date .
والتقرير فيه هذا الكود:
Private Sub PageHeaderSection_Format(Cancel As Integer, FormatCount As Integer) If Add_Dates = True Then 'add the array items, based on the Report page number Fd(Me.Page) = Me.F_Edate Else 'show the results Me.myF_Edate = Fd(Me.Page) Me.myL_Edate = Ld(Me.Page) End If End Sub Private Sub PageFooterSection_Format(Cancel As Integer, FormatCount As Integer) If Add_Dates = True Then 'add the array items Ld(Me.Page) = Me.L_Edate End If End Sub Private Sub Report_Close() If Add_Dates = False Then 'Empty the array ReDim Fd(0) 'first E_date ReDim Ld(0) 'last E_date End If End Sub .
فإذا قيمة Add_Dates = True في النموذج ، فيعمل التقرير المخفي لعمل المصفوفة ،
بينما عندما تتغير قيمة Add_Dates ، فيقوم التقرير بإظهار قيم المصفوفة في التقرير الغير مخفي ،
وعند اغلاق التقرير ، نقوم بحذف بيانات المصفوفة 🙂
لذلك ، وللحصول على النتائج الصحيحة ، يجب تشغيل التقرير من النموذج ، حتى يقوم الكود بما يجب 🙂
.
.
جعفر
1277.addDateHideRport.accdb.zip
-
jjafferr's post in كيف نأخذ التاريخ من أول سجل وأخر سجل ونضعهم في رأس الصفحة للتقرير was marked as the answer
السلام عليكم 🙂
في الواقع ، هذا السؤال من الاسئلة التي تُثار بين الحينه والاخرى ،
واليك السبب في عدم امكانية الحصول على قيمة ذيل الصفحة ، في رأس الصفحة :
التقرير عندك فيه 3 اقسام :
.
خلينا نشوف قيم التاريخ لصفحة:
.
والآن خلينا نشوف التاريخ ، بالطريقة اللي اقسام التقرير تشوفه ، بإستخدام حدث التنسيق لكل قسم:
Private Sub PageHeaderSection_Format(Cancel As Integer, FormatCount As Integer) Debug.Print "Header= " & Me.Edate End Sub Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer) Debug.Print " Detail= " & Me.Edate End Sub Private Sub PageFooterSection_Format(Cancel As Integer, FormatCount As Integer) Debug.Print "Footer= " & Me.Edate Debug.Print End Sub .
والنتيجة لصفحتين :
Header= 18-Oct-20
Detail= 18-Oct-20
Detail= 19-Oct-20
Detail= 20-Oct-20
Detail= 21-Oct-20
Detail= 22-Oct-20
Detail= 23-Oct-20
Detail= 24-Oct-20
Detail= 25-Oct-20
Detail= 26-Oct-20
Detail= 27-Oct-20
Detail= 28-Oct-20
Detail= 29-Oct-20
Detail= 30-Oct-20
Detail= 31-Oct-20
Detail= 01-Nov-20
Detail= 02-Nov-20
Detail= 03-Nov-20
Detail= 04-Nov-20
Detail= 05-Nov-20
Detail= 06-Nov-20
Detail= 07-Nov-20
Detail= 08-Nov-20
Footer= 07-Nov-20
Header= 08-Nov-20
Detail= 08-Nov-20
Detail= 09-Nov-20
Detail= 10-Nov-20
Detail= 11-Nov-20
Detail= 12-Nov-20
Detail= 13-Nov-20
Detail= 14-Nov-20
Detail= 15-Nov-20
Detail= 14-Jan-21
Detail= 15-Jan-21
Detail= 16-Jan-21
Detail= 17-Jan-21
Detail= 18-Jan-21
Detail= 19-Jan-21
Detail= 20-Jan-21
Detail= 21-Jan-21
Detail= 22-Jan-21
Detail= 23-Jan-21
Detail= 24-Jan-21
Detail= 25-Jan-21
Detail= 26-Jan-21
Detail= 27-Jan-21
Footer= 26-Jan-21
.
من هنا نلاحظ ان رأس الصفحة يرى اول سجل ، بينما ذيل الصفحة يرى آخر سجل ، والتقرير يطبع / يُظهر رأس الصفحة قبل ان تكون البيانات وصلت الى ذيل الصفحة (يعني ذيل الصفحة لا يحتوي على اي قيمة حينها ، لما رأس الصفحة يحصل على القيمة) ، لهذا سبب ما نحصل على التاريخين معا في رأس الصفحة !!
-------------------------------------------------------------------------------------------------------
الآن وبعد ان عرفنا طريقة عمل التقرير ، خلينا نستفيد منه في عمل المطلوب :
خلينا نفتح التقرير بطريقة مخفية ، نأخذ قيمة سجل رأس صفحة التقرير وذيل صفحة التقرير لكل صفحة ، نحفظهم في مصفوفة Array ، ثم نفتح التقرير بالطريقة العادية ونأخذ بيانات رأس وذيل التقرير من المصفوفة ، ونضعهم في التقرير ، في رأس الصفحة 🙂
1. عمل نموذج لحصر البيانات بين قيمتين (مع اننا لسنا بحاجة الى هذه الخطوة ، ولكن لأن جدولك في سجلات بدون قيم تواريخ ، فهذا يعمل خلل في الكود) ،
ونعمل استعلام يصفي بيانات الجدول حسب تواريخ النموذج ، ويكون هذا الاستعلام مصدر بيانات التقرير:
.
2. النقر على زر فتح التقرير في النموذج ، يحتوي على هذا الكود :
والذي يعمل مصفوفة لـ 100 صفحة في التقرير (اذا تقريرك يحتوي على صفحات اكثر ، فقط اجعل هذا الرقم اكبر ، ما يضر اذا تركته = 200 او اكثر)
'accept adding dates Add_Dates = True 'initilize the arrays with a larg number of pages ReDim Fd(100) 'first E_date ReDim Ld(100) 'last E_date 'open the Report in Hidden mode, to put the E_dates in an array DoCmd.OpenReport "rpt_chfit", acViewPreview, , , acHidden 'close the Hidden Report DoCmd.Close acReport, "rpt_chfit" 'stop adding dates Add_Dates = False 'now open the Report in the normal way DoCmd.OpenReport "rpt_chfit", acViewPreview .
وهناك وحدة نمطية تحتفظ بقيم المصفوفة ، حتى تكون متوفرة لجميع كائنات البرنامج:
Option Compare Database Option Explicit Public Add_Dates As Boolean Public Fd() As Date 'first E_date Public Ld() As Date 'last E_date .
والتقرير فيه هذا الكود:
Private Sub PageHeaderSection_Format(Cancel As Integer, FormatCount As Integer) If Add_Dates = True Then 'add the array items, based on the Report page number Fd(Me.Page) = Me.F_Edate Else 'show the results Me.myF_Edate = Fd(Me.Page) Me.myL_Edate = Ld(Me.Page) End If End Sub Private Sub PageFooterSection_Format(Cancel As Integer, FormatCount As Integer) If Add_Dates = True Then 'add the array items Ld(Me.Page) = Me.L_Edate End If End Sub Private Sub Report_Close() If Add_Dates = False Then 'Empty the array ReDim Fd(0) 'first E_date ReDim Ld(0) 'last E_date End If End Sub .
فإذا قيمة Add_Dates = True في النموذج ، فيعمل التقرير المخفي لعمل المصفوفة ،
بينما عندما تتغير قيمة Add_Dates ، فيقوم التقرير بإظهار قيم المصفوفة في التقرير الغير مخفي ،
وعند اغلاق التقرير ، نقوم بحذف بيانات المصفوفة 🙂
لذلك ، وللحصول على النتائج الصحيحة ، يجب تشغيل التقرير من النموذج ، حتى يقوم الكود بما يجب 🙂
.
.
جعفر
1277.addDateHideRport.accdb.zip
-
jjafferr's post in كيف نأخذ التاريخ من أول سجل وأخر سجل ونضعهم في رأس الصفحة للتقرير was marked as the answer
السلام عليكم 🙂
في الواقع ، هذا السؤال من الاسئلة التي تُثار بين الحينه والاخرى ،
واليك السبب في عدم امكانية الحصول على قيمة ذيل الصفحة ، في رأس الصفحة :
التقرير عندك فيه 3 اقسام :
.
خلينا نشوف قيم التاريخ لصفحة:
.
والآن خلينا نشوف التاريخ ، بالطريقة اللي اقسام التقرير تشوفه ، بإستخدام حدث التنسيق لكل قسم:
Private Sub PageHeaderSection_Format(Cancel As Integer, FormatCount As Integer) Debug.Print "Header= " & Me.Edate End Sub Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer) Debug.Print " Detail= " & Me.Edate End Sub Private Sub PageFooterSection_Format(Cancel As Integer, FormatCount As Integer) Debug.Print "Footer= " & Me.Edate Debug.Print End Sub .
والنتيجة لصفحتين :
Header= 18-Oct-20
Detail= 18-Oct-20
Detail= 19-Oct-20
Detail= 20-Oct-20
Detail= 21-Oct-20
Detail= 22-Oct-20
Detail= 23-Oct-20
Detail= 24-Oct-20
Detail= 25-Oct-20
Detail= 26-Oct-20
Detail= 27-Oct-20
Detail= 28-Oct-20
Detail= 29-Oct-20
Detail= 30-Oct-20
Detail= 31-Oct-20
Detail= 01-Nov-20
Detail= 02-Nov-20
Detail= 03-Nov-20
Detail= 04-Nov-20
Detail= 05-Nov-20
Detail= 06-Nov-20
Detail= 07-Nov-20
Detail= 08-Nov-20
Footer= 07-Nov-20
Header= 08-Nov-20
Detail= 08-Nov-20
Detail= 09-Nov-20
Detail= 10-Nov-20
Detail= 11-Nov-20
Detail= 12-Nov-20
Detail= 13-Nov-20
Detail= 14-Nov-20
Detail= 15-Nov-20
Detail= 14-Jan-21
Detail= 15-Jan-21
Detail= 16-Jan-21
Detail= 17-Jan-21
Detail= 18-Jan-21
Detail= 19-Jan-21
Detail= 20-Jan-21
Detail= 21-Jan-21
Detail= 22-Jan-21
Detail= 23-Jan-21
Detail= 24-Jan-21
Detail= 25-Jan-21
Detail= 26-Jan-21
Detail= 27-Jan-21
Footer= 26-Jan-21
.
من هنا نلاحظ ان رأس الصفحة يرى اول سجل ، بينما ذيل الصفحة يرى آخر سجل ، والتقرير يطبع / يُظهر رأس الصفحة قبل ان تكون البيانات وصلت الى ذيل الصفحة (يعني ذيل الصفحة لا يحتوي على اي قيمة حينها ، لما رأس الصفحة يحصل على القيمة) ، لهذا سبب ما نحصل على التاريخين معا في رأس الصفحة !!
-------------------------------------------------------------------------------------------------------
الآن وبعد ان عرفنا طريقة عمل التقرير ، خلينا نستفيد منه في عمل المطلوب :
خلينا نفتح التقرير بطريقة مخفية ، نأخذ قيمة سجل رأس صفحة التقرير وذيل صفحة التقرير لكل صفحة ، نحفظهم في مصفوفة Array ، ثم نفتح التقرير بالطريقة العادية ونأخذ بيانات رأس وذيل التقرير من المصفوفة ، ونضعهم في التقرير ، في رأس الصفحة 🙂
1. عمل نموذج لحصر البيانات بين قيمتين (مع اننا لسنا بحاجة الى هذه الخطوة ، ولكن لأن جدولك في سجلات بدون قيم تواريخ ، فهذا يعمل خلل في الكود) ،
ونعمل استعلام يصفي بيانات الجدول حسب تواريخ النموذج ، ويكون هذا الاستعلام مصدر بيانات التقرير:
.
2. النقر على زر فتح التقرير في النموذج ، يحتوي على هذا الكود :
والذي يعمل مصفوفة لـ 100 صفحة في التقرير (اذا تقريرك يحتوي على صفحات اكثر ، فقط اجعل هذا الرقم اكبر ، ما يضر اذا تركته = 200 او اكثر)
'accept adding dates Add_Dates = True 'initilize the arrays with a larg number of pages ReDim Fd(100) 'first E_date ReDim Ld(100) 'last E_date 'open the Report in Hidden mode, to put the E_dates in an array DoCmd.OpenReport "rpt_chfit", acViewPreview, , , acHidden 'close the Hidden Report DoCmd.Close acReport, "rpt_chfit" 'stop adding dates Add_Dates = False 'now open the Report in the normal way DoCmd.OpenReport "rpt_chfit", acViewPreview .
وهناك وحدة نمطية تحتفظ بقيم المصفوفة ، حتى تكون متوفرة لجميع كائنات البرنامج:
Option Compare Database Option Explicit Public Add_Dates As Boolean Public Fd() As Date 'first E_date Public Ld() As Date 'last E_date .
والتقرير فيه هذا الكود:
Private Sub PageHeaderSection_Format(Cancel As Integer, FormatCount As Integer) If Add_Dates = True Then 'add the array items, based on the Report page number Fd(Me.Page) = Me.F_Edate Else 'show the results Me.myF_Edate = Fd(Me.Page) Me.myL_Edate = Ld(Me.Page) End If End Sub Private Sub PageFooterSection_Format(Cancel As Integer, FormatCount As Integer) If Add_Dates = True Then 'add the array items Ld(Me.Page) = Me.L_Edate End If End Sub Private Sub Report_Close() If Add_Dates = False Then 'Empty the array ReDim Fd(0) 'first E_date ReDim Ld(0) 'last E_date End If End Sub .
فإذا قيمة Add_Dates = True في النموذج ، فيعمل التقرير المخفي لعمل المصفوفة ،
بينما عندما تتغير قيمة Add_Dates ، فيقوم التقرير بإظهار قيم المصفوفة في التقرير الغير مخفي ،
وعند اغلاق التقرير ، نقوم بحذف بيانات المصفوفة 🙂
لذلك ، وللحصول على النتائج الصحيحة ، يجب تشغيل التقرير من النموذج ، حتى يقوم الكود بما يجب 🙂
.
.
جعفر
1277.addDateHideRport.accdb.zip
-
jjafferr's post in مساعدة في انشاء كود was marked as the answer
وعليكم السلام 🙂
وبدون ان انزل المرفق :
if me.parent.name="F1" then me.parent!z=me!x * me!y else me.parent!z=me!x + me!y endif .
الامر Parent معناه الوالدين ، اي ان والدي النموذج الفرعي C.
جعفر
-
jjafferr's post in ظهر رأس العمود فى اعلي العمودين was marked as the answer
وعليكم السلام 🙂
نريد نعمل تجميع وهمي :
.
.
.
ونعطيه اي اسم خرافي ، مثلا نقطة (.)
.
.
.
.
والنتيجة
.
جعفر
1266.قائمة.accdb.zip
-
jjafferr's post in كود حذف اكثر من حقل was marked as the answer
تفضل يا سيدي 🙂
عملت لك جدول tbl_Student_info ،
بينما استعلام qry_Student_info يجمع الجدول السابق مع جدول الجدول الجديد :
.
ولما تريد تستعمل النماذج او التقارير ، استعمل الاستعلام qry_Student_info كمصدر بيانات لها ،
بس رجاء الانتباه ، تأكد ان اسماء الطلبة موجودة ف الجدول tbl_Student_info ، والا فإنها لن تظهر في الاستعلام 🙂
جعفر
StuData.zip
-
jjafferr's post in مساعدة في تحويل كود من نصي الى رقمي was marked as the answer
السلام عليكم 🙂
لو تتبع هذه الطريقة ، ما تتعب 🙂
جعفر