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

jjafferr

أوفيسنا
  • Posts

    9977
  • تاريخ الانضمام

  • تاريخ اخر زياره

  • Days Won

    406

كل منشورات العضو jjafferr

  1. وعليكم السلام اخوي علي 🙂 @علي هندسة على حدث بعد التحديث ، اكتب احد هذه الاسطر لعرض قيمة العمود الاول me.text6 = me.list1.column(0) لعرض قيمة العمود الثاني me.text6 = me.list1.column(1) لعرض قيمة العمود الثالث me.text6 = me.list1.column(2) جعفر
  2. الرسالة تأتيك ، لأن المرفق الجديد الذي ارسلته لك في موضوعك الآخر ، عملت فيه هذا الحقل ، واذا لم تنتبه لهذا الحقل ، وعلى طول استوردت الكائنات الاخرى لبرنامجك الاصل ، فستأتيك هذه الرسالة 🙂 هممم ، سؤال يحتاج الى مزيد من الايضاح ، حتى يكون له معنى 🙂 جعفر
  3. السلام عليكم 🙂 1. هذه الرسائل ذو اهمية لعمل البرنامج ، واذا ظهرت مثل هذه الرسالة ، فهذا معناه ان المبرمج اخطأ في شيء ما في الكود ، ويجب علاجة وعدم تجاهله !! رسالتك تقول بأن البرنامج يحتاج الى الحقل cmd_edara_N في عمله ، يعني ان الكود فيه هذا الحقل ، ولكن البرنامج لم يستطع الحصول عليه في النموذج !! فالطريقة الصحيحة في عمل زر البحث او زر فتح تقرير يعتمد على هذه الحقول التي في النموذج هي ، ان لا نعتمد على ان مستخدم البرنامج سوف يُدخل البيانات في هذه الحقول لذلك ، يجب علينا ان نتحقق من ادخال البيانات ، هكذا: Private Sub cmd_Print_Preview_Click() On Error GoTo err_cmd_Print_Preview_Click if len(me.cmd_edara_N & "")=0 then msgbox "رجاء اختيار الإدارة من القائمة" me.cmd_edara_N.setfocus exit sub elseif len(me.Date_From & "")=0 then msgbox "رجاء ادخال قيمة في حقل: تاريخ_من" me.Date_From.setfocus exit sub elseif len(me.Date_To & "")=0 then msgbox "رجاء ادخال قيمة في حقل: تاريخ_الى" me.Date_To.setfocus exit sub endif Dim stDocName As String stDocName = "rpt_Monthly" DoCmd.OpenReport stDocName, acViewPreview Exit_cmd_Print_Preview_Click: Exit Sub err_cmd_Print_Preview_Click: if err.number=2465 then msgbox "هناك احد الحقول فارغة، والتي يحتاج الى قيمته الكود، رجاء تعبئتها ثم النقر على الزر مرة اخرى" Resume Exit_cmd_Print_Preview_Click elseIf Err.Number = 3070 Then MsgBox "احد الحقول مصدر بياناته غير صحيح" Resume Exit_cmd_Print_Preview_Click Else MsgBox Err.Number & vbCrLf & Err.Description End If End Sub . وهنا مثال آخر . 2. عند وضع رقم الخطأ في نهاية الكود ، فاننا نتحكم في الرسالة التي نريد ان نجعل المستخدم يراها (لاحظ السطر if err.number = 2465 والاسطر التي تليه) ويمكنك ايضا اصطياد الخطأ بهذه الطريقة: . وفي حالات قليلة ، وجدا ضيقة (مثل زر للإنتقال الى السجل السابق او التالي) نستعمل on error resume next ، والتي معناها لا تجعلني ارى اي رسالة خطأ ، ولكن في حالتنا ، واذا لم نرى رسالة الخطأ ، فلن نعرف لماذا برنامجنا لا يعطي النتائج الصحيحة ، او حتى لماذا لا يفتح التقرير !! جعفر
  4. بسبب صعوبة حصول الاعضاء على البرنامج من رابط الرفع ، تم اضافة المرفق الى الموضوع الاصل 🙂 جعفر
  5. همممم الكل انشغل بالرابط ، ونسيتوا المجهود في عمل البرنامج !! اخي @aaaamido ، اصالة عن نفسي ، ونيابة عن جميع الشباب اللي شاركوا في الموضوع ، احب ان اشكرك على هذا المجهود وهذه الهدية 🙂 ومن جانبي ، فقد اعطيتك Like 🙂 جعفر
  6. عملت لك الاضافة ، اللي تحتها خط احمر ، وتقدر تعملها للحقل الآخر للبحث : . والنتيجة: . جعفر 1031.Advanced Search Marj3.accdb.zip
  7. السلام عليكم 🙂 وبعد ملاحقة الرابط الى آخر الى آخر الى آخر الى آخر الى آخر الى آخر الى ... ، ومحاربة مضاد الفيروسات على كمبيوتري مع هذه الصفحات والتي تحاول زرع برامج خبيثة عليه ، اليكم الرابط الاخير لتحميل البرنامج: https://www.file-up.org/azot1x4brsec جعفر ملاحظة: بسبب صعوبة حصول الاعضاء على البرنامج من رابط الرفع ، تم اضافة المرفق الى الموضوع الاصل 🙂
  8. السلام عليكم 🙂 في الماضي كان عندنا معيار واحد فقط (التاريخ) ، بينما الآن اصبح عندنا معيارين (التاريخ و الادارة) ، وهذا اخذ مني اكثر من يومين للوصول اليه !! على العموم ، نظّفت الكود بطريقة اخرى ، والعرض اصبح الآن يأخذ الصفحة كاملة ، وعلى اساسه يعمل عرض الحقول 🙂 وهذا الكود كاملا: Private Sub Report_Open(Cancel As Integer) Dim ctrl As Control Dim A As Integer Dim Empty_Cells As Integer Dim Full_Cells As Integer Dim W As Integer Dim myWhere As String Dim rpt_width As Integer Dim Full_Date As Date Dim D As Integer Dim Y As Integer Dim M As Integer 'W = 2200 / 4 'field width Empty_Cells = 0 Full_Cells = 0 'the name rpt_width = 0 Y = Forms!Report!iYear 'year M = Forms!Report!iMonth 'month 'lets fit/expand the controld based on the avaible width 'how many Full_Cells For D = 1 To 31 Full_Date = DateSerial(Y, M, D) myWhere = "[edara]='" & Forms!Report!cmd_edara_N & "'" myWhere = myWhere & " And " myWhere = myWhere & "[zeiara_date]=" & DateFormat(Full_Date) A = DCount("*", "zeara", myWhere) If A <> 0 Then Full_Cells = Full_Cells + 1 End If Next D W = Me.Width - (Me.Printer.LeftMargin + Me.Printer.RightMargin + Me("mogh_name").Width) W = W / (Full_Cells - 1) For D = 1 To 31 Full_Date = DateSerial(Y, M, D) 'the field Names from the Crosstab query 'check if this field exists int the table myWhere = "[edara]='" & Forms!Report!cmd_edara_N & "'" myWhere = myWhere & " And " myWhere = myWhere & "[zeiara_date]=" & DateFormat(Full_Date) A = DCount("*", "zeara", myWhere) If A = 0 Then 'field dose not exist Me("txt_" & D).Width = 0 'trim field size to Zero Me("txt_" & D).Visible = False 'make the field invisible Me("txt_" & D).ControlSource = "" 'remove the Control Source Me("lbl_" & D).Width = 0 'trim label size to Zero Me("lbl_" & D).Visible = False 'make the label invisible Empty_Cells = Empty_Cells + 1 'Debug.Print "Off " & Me("txt_" & D).Name & vbTab & "D:" & D & vbTab & "Full:" & Full_Date & vbTab & "A:" & A Else 'field exists Me("txt_" & D).Width = 1 * W 'set the field width Me("txt_" & D).Visible = True 'make the field visible Me("txt_" & D).ControlSource = Full_Date Me("lbl_" & D).Width = 1 * W 'set the label width Me("lbl_" & D).Visible = True 'make the label visible Me("lbl_" & D).Caption = D & "/" & M 'give the label, a caption Full_Cells = Full_Cells + 1 rpt_width = rpt_width + Me("txt_" & D).Width 'add the width 'Debug.Print "ON " & Me("txt_" & D).Name & vbTab & "D:" & D & vbTab & "Full:" & Full_Date & vbTab & "A:" & A End If Next D Me.Width = rpt_width + Me("mogh_name").Width 'the final Report width End Sub جعفر 1030.rpt_Monthly_Crosstaby.mdb
  9. مافهمت قصدك في السؤال: فالبيانات عندك تظهر بالكامل ، ولا حاجة الى عمل اي شيء !! ولكن ، اذا اردت معرفة طريقة عمل تحديث الحقل الفارغ بعلامة - ، فاليك هذه الصورة كمثال: . جعفر
  10. السلام عليكم 🙂 اخي سامي: وضع اكثر من سؤال في الموضوع يُعتبر مخالف لقوانين المنتدى ، والاسئلة اعلاه خارجة عن الموضوع 🙂 جعفر
  11. السلام عليكم 🙂 . 1. نعم ، بعمل مجموعة استعلامات تحديث ، استعلام لكل جدول (وقد نحتاج الى اكثر من استعلام للجدول) ، ولكن يعملون بحدث رز واحد ، 2. نعم ، ولكن هذا يعتمد على المعيار والتصفية ، ويمكنك تجربة هذا على حقل معين في الجدول ، قم بتغيير بيانات بعض الحقول الفارغة الى - ، وشوف النتيجة. نعم كلامك صحيح. سبق وان ناقشنا هذا الموضوع ، وبعمق ، فرجاء لا تأتي بأسماء اعضاء وتحرجهم ، والنتيجة ببساطة انك لن تجد لهم جواب في اسئلتك القادمة (وقد تم حذف اسم العضو من موضوعك اعلاه). مشكلتك الاساسية هي عدم ظهور كافة البيانات في الاستعلام (الاستعلام وبدون اي معايير) ، وذلك لأن العلاقة التي عملتها بين الجدولين لا تطلب جميع السجلات وبغض النظر من وجودها في الجدول الآخر او لا ، وقد قام الاخ كاسر @kaser906 مشكورا بتوضيح وتعديل الاستعلام في 3 ابريل ، اي قبل 8 ايام تقريبا ، وذلك في الموضوع والطريقة التي قام بها: بما ان ربطك للجدولين ظاهرا هكذا (علاقة الربط غير حقيقة الربط) ، ولكن حقيقة ، الربط بحقل "اسم الشهرة" و"المؤلف" ، لأنك مستخدم Lookup لحقل "المؤلف" ، فالحقول (في المربع الاحمر) التي لا توجد اسماء لها في الجدول الآخر ، لن تظهر في الاستعلام . وبالنقر المزدوج على خط العلاقة بين الجدولين ، تظهر لنا هذه النافذه ، والتي نختار منها جميع السجلات في الجدول Marj3 ، بغض النظر اذا كانت موجودة في الجدول الآخر او لا . والنتيجة تكون هكذا (لاحظ السهم تحت الرقم 1) . وعلى اساسه نرى جميع البيانات في الاستعلام . الى هنا وينتهي الذي قام به الاخ كاسر ، ولما نرى النتيجة في النموذج ، وبعد إضافة معيار البحث في الاستعلام ، ثم نبحث عن: "د" . ففي واقع الامر ، لم تكن عندك مشكلة في NULL ، وانما في عرض البيانات بطريقة صحيحة 🙂 جعفر 1029.نموذج بحث.accdb.zip
  12. لإضافة السجلات الفارغة ، يجب اضافة الجزء الاخير من المعادلة التاليه: Like IIf(Len([forms]![frm_Main]![fName] & '')=0,"*","*" & [forms]![frm_Main]![fName] & "*") or [DateX] is null هذا معناه انك تبحث عن معلومه معينه ، ويعطيك الاكسس هذه المعلومه ، وطبعا الحقل الفارغ البكر NULL لا يحتوي على هذه المعلومة ، لذلك تريد: 1. بيانات البحث ، 2. الحقول الفارغة في الحقل. ولكن دعني اعطيك نصيحة ، فالعمل على الحقول التي بها بيانات وبها فارغة ، ليس بالعمل السهل ، لذلك ، فالافضل ان تعبئ هذه الحقول الفارغة بعلامة مثل "-" (شرطة او ناقص) ، ولسهولة العمل ، اعمل استعلام تحديث لهذا الحقل ، بحيث تُدخل علامة - في جميع الحقول الفارغة ، فيصبح بحثك اسهل 🙂 جعفر
  13. السلام عليكم 🙂 مع خالص الشكر، هل ممكن شرح نتعلم منه هذه الطرق في عمل استعلام البحث من حيث (غرض الاستخدام - والمميزات والعيوب - وكيفيه التنفيذ) هذه الروابط فيها المطلوب: 1. 2. . جعفر
  14. السلام عليكم 🙂 الدقة: جميع الاستعلامات لها نفس الدقة في تصفية/فرز البيانات ، السرعة: الاستعلام العادي من خلال معالج الاستعلام كان يمتاز عن بقية انواع الاستعلامات (وهنا لا اتكلم عن Recordset) ، بأن الاكسس كان يعمل له Compile وايضا يعمل له خطة عمل ، مما يجعله اسرع من بقية الانواع ، حيث انه يكون جاهزا للعمل بمجرد فتحه ، اما الآن ، وبوجود الاجهزة الجديدة والسريعة ، فبقية انواع الاستعلام ، تقوم بعمل Compile بسرعة عند استعمالها ، فلا نلاحظ الفرق في سرعة بينهم. ولكن ، هذا كله يعتمد على طريقة عمل الاستعلام ، بغض النظر عن نوعه 🙂 واهم شيء لجعل الاستعلام يعمل بسرعة هو ، عمل فهرسة (في الجداول) للحقول التي بها معايير ، او الحقول التي بها ربط بين الجداول. جعفر
  15. وعليكم السلام 🙂 اخي حسنين ، الصور التي وضعتها في الموضوع لا تظهر !! يجب ان تختار اللغة التي كتبت فيها البرنامج في المادة 4 من الصورة ادناه: . جعفر
  16. حياك الله اخوي حسنين ، واهلا وسهلا بك 🙂 وشكرا الموضوع المميز 🙂 جعفر
  17. السلام عليكم 🙂 نفس فكرة اخي حسنين ، ولكن على برنامجك: . . . . . . جعفر 1028.exa 4.accdb.zip
  18. وعليكم السلام 🙂 اخبرك طريقة الصيد ، بدل ان اعطيك سمكه 🙂 الجزء الاول هنا . والجزء الثاني . ولسرعة جلب البيانات ، استعمل التالي وبدون ذكر الحقل ، لأنك في نهاية الامر تحسب عدد السجلات: DCount("*", . وللتأكد انك صرت صياد ، وبعد ان تحصل على النتيجة الصحيحة ، اريدك تعرض لنا الكود بالكامل و النتيجة 🙂 جعفر
  19. السلام عليكم شباب 🙂 في مشاركتي لسؤال من نفس النوع ، وبعد البحث في الانترنت ، وضعت هذه المشاركة ، ولم يتم تجربة الكود ، والفكرة هي عمل التحويل الى accde على جهاز العميل برمجيا : . وفي هذا الموضوع ، تم تجربة الكود وبنجاح 🙂 . جعفر
  20. وعليكم السلام ورحمة الله وبركاته 🙂 شكرا لك على هذه الكلمات الجميلة ، وانا شخصيا ، ونحن كمنتدى وإدارة المنتدى ، نعتز ونفتخر برؤية مشاركات فيها فائدة للجميع ، وبالذات بافكار جديدة 🙂 نحن محظوظين بوجودنا في قريتنا الصغيرة "منتدى افسينا" ، وبوجود الاعضاء جيران لنا ، وبالاخص جيران امثالكم 🙂 جعفر
  21. السلام عليكم 🙂 نعم ممكن 🙂 هذا الجدول الجديد، مثلا: تم تعديل الاستعلام والوحدة النمطية لتتضمن جميع الدرجات: والنتيجة: وهذه الوحدة النمطية المعدلة: Public Function Per(Deg As String, Final_Grade As Integer) As String 'Expr1: IIf([Deg1]="غـ","متخلف",IIf(((Val([Deg1])/20)*100)<50,"Less50",IIf(((Val([Deg1])/20)*100) Between 50 And 55,"50-55%",IIf(((Val([Deg1])/20)*100) Between 55.1 And 60,"55-60%",IIf(((Val([Deg1])/20)*100) Between 60.1 And 65,"60-65%",IIf(((Val([Deg1])/20)*100) Between 65.1 And 70,"65-70%",IIf(((Val([Deg1])/20)*100) Between 70.1 And 75,"70-75%",IIf(((Val([Deg1])/20)*100) Between 75.1 And 80,"75-80%",IIf(((Val([Deg1])/20)*100) Between 80.1 And 85,"80-85%",IIf(((Val([Deg1])/20)*100) Between 85.1 And 90,"85-90%",IIf(((Val([Deg1])/20)*100) Between 90.1 And 95,"90-95%",IIf(((Val([Deg1])/20)*100) Between 95.1 And 99.99,"95-99%","100%")))))))))))) Dim Grade As Double Grade = ((Val(Deg) / Final_Grade) * 100) If Deg = "غـ" Then Per = "متخلف" ElseIf Grade < 50 Then Per = "Less50" ElseIf Grade >= 50 And Grade <= 55 Then Per = "50-55%" ElseIf Grade >= 55.1 And Grade <= 60 Then Per = "55-60%" ElseIf Grade >= 60.1 And Grade <= 65 Then Per = "60-65%" ElseIf Grade >= 65.1 And Grade <= 70 Then Per = "65-70%" ElseIf Grade >= 70.1 And Grade <= 75 Then Per = "70-75%" ElseIf Grade >= 75.1 And Grade <= 80 Then Per = "75-80%" ElseIf Grade >= 80.1 And Grade <= 85 Then Per = "80-85%" ElseIf Grade >= 85.1 And Grade <= 90 Then Per = "85-90%" ElseIf Grade >= 90.1 And Grade <= 95 Then Per = "90-95%" ElseIf Grade >= 95.1 And Grade <= 99.99 Then Per = "95-99%" Else Per = "100%" End If 'Debug.Print "Grade of: " & Deg & "/" & Final_Grade & " = " & Per End Function وهذه نتيجة كل درجة على حدة: Grade of: 13/20 = 60-65% Grade of: 11/20 = 50-55% Grade of: 11/20 = 50-55% Grade of: 10/20 = 50-55% Grade of: 0/20 = Less50 Grade of: 0/20 = Less50 Grade of: 9/20 = Less50 Grade of: 8/20 = Less50 Grade of: 7/20 = Less50 Grade of: 6/20 = Less50 Grade of: 5/20 = Less50 Grade of: 12/20 = 55-60% Grade of: 12/20 = 55-60% Grade of: 3/20 = Less50 Grade of: 2/20 = Less50 Grade of: 1/20 = Less50 Grade of: 4/20 = Less50 Grade of: 6/30 = Less50 Grade of: 1/30 = Less50 Grade of: 2/30 = Less50 Grade of: 3/30 = Less50 Grade of: 20/30 = 65-70% Grade of: 20/30 = 65-70% Grade of: 9/30 = Less50 Grade of: 0/30 = Less50 Grade of: 7/30 = Less50 Grade of: 15/30 = 50-55% Grade of: 8/30 = Less50 Grade of: 20/30 = 65-70% Grade of: 19/30 = 60-65% Grade of: 18/30 = 55-60% Grade of: 16/30 = 50-55% Grade of: 14/30 = Less50 Grade of: ÛÜ/30 = ãÊÎáÝ Grade of: ÛÜ/30 = ãÊÎáÝ Grade of: ÛÜ/30 = ãÊÎáÝ Grade of: 5/30 = Less50 Grade of: 17/30 = 55-60% Grade of: 14/50 = Less50 Grade of: 10/50 = Less50 Grade of: 11/50 = Less50 Grade of: 13/50 = Less50 Grade of: 20/50 = Less50 Grade of: 15/50 = Less50 Grade of: 16/50 = Less50 Grade of: 17/50 = Less50 Grade of: 18/50 = Less50 Grade of: 19/50 = Less50 Grade of: ÛÜ/50 = ãÊÎáÝ Grade of: 19/50 = Less50 Grade of: 12/50 = Less50 Grade of: 75/100 = 70-75% Grade of: 75/100 = 70-75% Grade of: ÛÜ/100 = ãÊÎáÝ Grade of: 50/100 = 50-55% Grade of: 60/100 = 55-60% Grade of: 70/100 = 65-70% Grade of: 65/100 = 60-65% Grade of: 40/100 = Less50 Grade of: 85/100 = 80-85% Grade of: 85/100 = 80-85% Grade of: 90/100 = 85-90% Grade of: 90/100 = 85-90% Grade of: 95/100 = 90-95% Grade of: 95/100 = 90-95% Grade of: 100/100 = 100% Grade of: 100/100 = 100% Grade of: 60/100 = 55-60% Grade of: 50/100 = 50-55% Grade of: 40/100 = Less50 Grade of: 0/100 = Less50 Grade of: 15/100 = Less50 Grade of: ÛÜ/100 = ãÊÎáÝ Grade of: 55/100 = 50-55% Grade of: 65/100 = 60-65% Grade of: 18/100 = Less50 Grade of: ÛÜ/100 = ãÊÎáÝ Grade of: ÛÜ/100 = ãÊÎáÝ Grade of: 80/100 = 75-80% Grade of: 80/100 = 75-80% Grade of: 30/100 = Less50 Grade of: 13/20 = 60-65% Grade of: 11/20 = 50-55% Grade of: 11/20 = 50-55% Grade of: 10/20 = 50-55% Grade of: 0/20 = Less50 Grade of: 0/20 = Less50 Grade of: 9/20 = Less50 Grade of: 8/20 = Less50 Grade of: 7/20 = Less50 Grade of: 6/20 = Less50 Grade of: 5/20 = Less50 Grade of: 12/20 = 55-60% Grade of: 12/20 = 55-60% Grade of: 3/20 = Less50 Grade of: 2/20 = Less50 Grade of: 1/20 = Less50 Grade of: 4/20 = Less50 Grade of: 6/30 = Less50 Grade of: 1/30 = Less50 Grade of: 2/30 = Less50 Grade of: 3/30 = Less50 Grade of: 20/30 = 65-70% Grade of: 20/30 = 65-70% Grade of: 9/30 = Less50 Grade of: 0/30 = Less50 Grade of: 7/30 = Less50 Grade of: 15/30 = 50-55% Grade of: 8/30 = Less50 Grade of: 20/30 = 65-70% Grade of: 19/30 = 60-65% Grade of: 18/30 = 55-60% Grade of: 16/30 = 50-55% Grade of: 14/30 = Less50 Grade of: ÛÜ/30 = ãÊÎáÝ Grade of: ÛÜ/30 = ãÊÎáÝ Grade of: ÛÜ/30 = ãÊÎáÝ Grade of: 5/30 = Less50 Grade of: 17/30 = 55-60% Grade of: 14/50 = Less50 Grade of: 10/50 = Less50 Grade of: 11/50 = Less50 Grade of: 13/50 = Less50 Grade of: 20/50 = Less50 Grade of: 15/50 = Less50 Grade of: 16/50 = Less50 Grade of: 17/50 = Less50 Grade of: 18/50 = Less50 Grade of: 19/50 = Less50 Grade of: ÛÜ/50 = ãÊÎáÝ Grade of: 19/50 = Less50 Grade of: 12/50 = Less50 Grade of: 75/100 = 70-75% Grade of: 75/100 = 70-75% Grade of: ÛÜ/100 = ãÊÎáÝ Grade of: 50/100 = 50-55% Grade of: 60/100 = 55-60% Grade of: 70/100 = 65-70% Grade of: 65/100 = 60-65% Grade of: 40/100 = Less50 Grade of: 85/100 = 80-85% Grade of: 85/100 = 80-85% Grade of: 90/100 = 85-90% Grade of: 90/100 = 85-90% Grade of: 95/100 = 90-95% Grade of: 95/100 = 90-95% Grade of: 100/100 = 100% Grade of: 100/100 = 100% Grade of: 60/100 = 55-60% Grade of: 50/100 = 50-55% Grade of: 40/100 = Less50 Grade of: 0/100 = Less50 Grade of: 15/100 = Less50 Grade of: ÛÜ/100 = ãÊÎáÝ Grade of: 55/100 = 50-55% Grade of: 65/100 = 60-65% Grade of: 18/100 = Less50 Grade of: ÛÜ/100 = ãÊÎáÝ Grade of: ÛÜ/100 = ãÊÎáÝ Grade of: 80/100 = 75-80% Grade of: 80/100 = 75-80% Grade of: 30/100 = Less50 جعفر 1022.Problem 55-2003.mdb.zip
  22. تفضل 🙂 الطريقة هي: فتح التقرير للمعاينه (بطريقة مخفية) ، في التقرير ، في خانة الفرز ، نرسل اليه فرز النموذج الفرعي ، ثم نعطي التقرير الأمر بالقيام بالفرز ، (وفي سطر آخر كذلك يمكننا ان نرسل اليه تصفية النموذج الفرعي Filter ، ثم يجب ان نعطي التقرير الأمر بالقيام بالتصفية FilterOn) ، ثم نطبع التقرير ، ثم نغلق التقرير . فرز التقرير حسب فرز النموذج الفرعي: DoCmd.OpenReport "Q1", acViewPreview, , , acHidden Reports!Q1.OrderBy = Me.SUB.Form.OrderBy Reports!Q1.OrderByOn = True Dim PauseTime, Start PauseTime = 1 ' Set duration. Start = Timer ' Set start time. Do While Timer < Start + PauseTime DoEvents ' Yield to other processes. Loop DoCmd.OutputTo acOutputReport, "Q1", acFormatPDF, ("RateCard" & Format(Now(), "mmmyyyy hhmmss") & ".pdf"), True DoCmd.Close acReport, "Q1", acSaveNo . وعلى هذا القياس تستطيع عمل تصفية كذلك 🙂 جعفر 1027.test2000.mdb.zip
  23. تفضل ، والطريقة اللي تريدها هي رقم 2 في الرابط جعفر
  24. السلام عليكم ورحمة الله وبركاته الاستعلام يُعتبر العمود الفقري لقواعد البيانات ، وكلما زادت معرفتنا به ، كلما يصبح البرنامج افضل واسرع 🙂 البحث/التصفية في الاستعلام من الطرق المهمة ، ولكن وللأسف الشديد ، ارى الكثير من المبرمجين لا يعرفون الطريقة الصحيحة في عملها ، فالطريقة الغير صحيحة قد تعطيك النتائج ولكن على حساب وقت تنفيذ الاستعلام 😞 الامثله هنا تقوم على انه يوجد لدينا نموذج اسمه frm_Main ، وبه حقل الاسم fName ، وحقل التاريخ:من Date_From ، وحقل التاريخ:الى Date_To ، والحقول في الاستعلام ، حقل الاسم fName ، وحقل التاريخ DateX . 1. اذا اردنا البحث عن اسم كامل (وليس جزء من اسم) ، فيجب ان يكون المعيار في الاستعلام: [forms]![frm_Main]![fName] 2. واذا كان حقل الاسم فارغا في النموذج ، ونريد ان نرى جميع الاسماء ، فالمعيار يصبح: iif(len([forms]![frm_Main]![fName] & '')=0,[fName],[forms]![frm_Main]![fName]) والشرح للتأكد بأن الحقل فارغ في النموذج، بدل ان نكتب IsNull([forms]![frm_Main]![fName]) or [forms]![frm_Main]![fName]=0 فإننا نختصر هذين الشرطين بشرط واحد len([forms]![frm_Main]![fName] & '')=0 iif(كان الحقل فارغ في النموذج,[fName] اعطنا جميع بيانات الحقل,[forms]![frm_Main]![fName]واذا كان الحقل به قيمة فاستعمل هذه القيمة) . 3. اذا اردنا البحث عن جزء من الاسم Like IIf(Len([forms]![frm_Main]![fName] & '')=0,"*","*" & [forms]![frm_Main]![fName] & "*") والشرح IIf(Len([forms]![frm_Main]![fName] & '')=0 نعم Like "*" لا Like "*" & [forms]![frm_Main]![fName] & "*") . 4. اذا اردنا البحث بين تاريخين بدون سجلات التاريخ الفارغة Between (IIf(Len([Forms]![frm_main]![Date_From] & '')=0,#01-Jan-1900#,[Forms]![frm_main]![Date_From])) And (IIf(Len([Forms]![frm_main]![Date_To] & '')=0,#01-Jan-2900#,[Forms]![frm_main]![Date_To])) والشرح Between (IIf(Len([Forms]![frm_main]![Date_From] & '')=0,#01-Jan-1900#,[Forms]![frm_main]![Date_From])) And (IIf(Len([Forms]![frm_main]![Date_To] & '')=0,#01-Jan-2900#,[Forms]![frm_main]![Date_To])) مع سجلات التاريخ الفارغة Between (IIf(Len([Forms]![frm_main]![Date_From] & '')=0,#01-Jan-1900#,[Forms]![frm_main]![Date_From])) And (IIf(Len([Forms]![frm_main]![Date_To] & '')=0,#01-Jan-2900#,[Forms]![frm_main]![Date_To])) Or [DateX] Is Null والشرح Between (IIf(Len([Forms]![frm_main]![Date_From] & '')=0,#01-Jan-1900#,[Forms]![frm_main]![Date_From])) And (IIf(Len([Forms]![frm_main]![Date_To] & '')=0,#01-Jan-2900#,[Forms]![frm_main]![Date_To])) Or [DateX] Is Null او طريقة استاذنا واخونا العود ابو خليل Between nz([forms]![frm_main]![Date_From];"01/01/1900") And nz([forms]![frm_main]![Date_To];"01/01/2100") . جعفر
  25. وعليكم السلام 🙂 هذا يعتمد على طريقة عملك للبحث ، هل عن طريق الاستعلام ، او بالكود في النموذج مباشرة عن طريق Filter ، او بالكود وتغيير Recordset او تغيير RecordSource ، جعفر
×
×
  • اضف...

Important Information