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

شايب

03 عضو مميز
  • Posts

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

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

  • Days Won

    2

كل منشورات العضو شايب

  1. الحقيقة ان لدي ملاحظات على الجدول والاستعلام سبق ان اشرت اليها قي ردي السابق اما اذا اردنا الطبطبة والتلييس على رأي المثل طبطب وليس يطلع كويس فممكن ان نجمع حقلي الدرجة والفوج في حقل واحد ونجعلة في الكولن 3 او اربعة في مصدر القائمة ونجعل حجمه 0 وايضا نعمله في استعلام مصدر التقرير ثم نفلتر بمعيار هذا الحقل ولكني افضل ان يقوم صاحب العمل ببناء البرنامج بشكل افضل واخذ رأي الاساتذة لعمل اكثر احترافيه الشايب
  2. الله يسعدك يا ابا خليل نفس الفكرة التي عملتها ولكني لم اضع مرفق لوجود تحفظ على بعض النتائج وهي ايضا موجودة في تعديلك جرب اختيار استاذ 1 واستاذ 2 ومعلم 1 يفترض تكون النتائج لثلاث فئات ستجد ان النتيجة اربعة استاذ 1 استاذ 2 معلم 1 معلم 2 وهذا ليس خطأ في الكود ولكن بسبب الحقل الفوج تحياتي
  3. سبب المشكلة ان الكود الذي عمله اخي جعفر يفلتر مربع القائمة بناء على حقل واحد grade ويعمل بشكل ممتاز وفقا لطلبك في حينه الان ترغب في فلترة حقلين وهنا ممكن عملها بطريقتين طريقة بسيطة وبدون تعديل على كود اخي جعفر نفلتر الحقل الفوج في الاستعلام بواسطة مربع تحرير وسرد الطريقة الثانية نعدل كود استاذنا ونحتاج الى اضافة متغير ثاني نحمل فيه قيمة الحقل الاخر بناء على ماتم اختياره ثم نفتح التقرير بمعيارين وهي الطريقة الافضل مع بعض التحفظ على بعض النتائج بسبب كون حقل الفوج لا يمثل حقل فريد مع ذلك ننتظر رأي الاساتذة فربما يكون لديهم حل افضل وخصوصا بان لدي ملاحظات على الاستعلام مصدر التقرير لتعدد الشروط وملاحظات على بناء الجدول واستخدام مربعات التحرير في الجدول وبعض الحقول نصية وتحمل ارقام واخيرا وليس اخر اخونا شايب يعتقد ان جدول مساند للقيم افضل من استخدام قائمة القيم مصدرا للقوائم المنسدلة ولكن تبقى وجهة نظر غير ملزمة وخصوصا انها من غير متخصص في البرمجة الشايب
  4. ماشاء الله عمل جميل للاستاذ خليفة وممكن الاستغناء عن الاستعلام مصدر التقير عن طريق شرط الفلتر في النموذج في السطر التاسع في زر فتح التقرير نستبدل DoCmd.OpenReport "rpt_Emp_Information", acViewPreview بالامر DoCmd.OpenReport "rpt_Emp_Information", acViewPreview, , Me.Filter مجرد فكرة للتقليل من كائنات البرنامج الشايب
  5. جرب المرفق yy(2).accdb
  6. السؤال للخبراء مع ذلك الاجابة ممكن في زر الامر لفتح التقرير استبدل الامر لديك بالامر التالي DoCmd.OpenReport "yy", acViewPreview, , , acDialog اخونا الشايب yy.accdb
  7. بسم الله عليك ههههه انا انتبهت من امس بس ماعلقت 😃 الشايب
  8. ادخل عرض التصميم للتقرير ثم حدد الحقل او الحقول التي ترغب تطبيق التنسيق عليها ثم تبويب تنسيق ثم تنسيق شرطي
  9. استخدم التنسيق الشرطي Database1(20).accdb
  10. هو نفس الكود السابق ولكن بدلا من تكراره اربع مرات نقوم بتعديل بسيط بداية في اعلى النموذج نعلن عن متغير رقمي Public s As Byte ثم نعمل اجراء على النحو التالي Sub sl() Dim rst As Recordset Dim a As Integer Set rst = Me.Sub.Form.Recordset rst.MoveFirst For a = 0 To rst.RecordCount - 1 rst.Edit Select Case s Case Is = 1 rst!drawn = -1 Case Is = 2 rst!send = -1 Case Is = 3 rst!drawn = 0 Case Is = 4 rst!send = 0 End Select rst.Update rst.MoveNext Next a Me.Sub.Requery s = 0 End Sub ثم في زر الامر نضع s = 1 sl وقيمة المتغيير s تتغير لكل زر امر وفقا لعمله في الكود اخير الاخ شايب لايهتم باختيار اسماء معبرة عن عمل المتغير او الاجراءات لكون غير متخصص في البرمجة ولا يمتهنها ويترك الامر للاساتذة والمختصين الملف مرفق تحديد الكل والغاء الكل.accdb
  11. جرب المرفق مع عدم الاقتناع بثلاث حقول مفتاح اساسي الشايب DD409.accdb
  12. اخيرا الاخ شايب يرغب في ايضاح اخير قاعدة برمجية عندما يكون لدينا كود يتم استخدامه في اكثر من موضع فمن الافضل تجنب تكرار كتابته وتحويل الكود الى وحدة او اجراء فرعي في النموذج وهنا اشارت الاستاذة الى وجود حقلين من نوع نعم لا واربعة ازرار امر اثنان لاختيار الكل واثنان للالغاء لذا ينصخ اخونا شايب في هذه الحالة بتحويل الكود الى اجراء فرعي واستخدام متغير رقمي في اعلى النموذج تتحدد قيمته من خلال ازرار الامر ونحتاج هنا الى ارقام من 1 الى 4 وفي الاجراء نستخدم Select Case بحيث اذا كان المتغير =1 يكون التعديل للحقل drawn وتكون قيمته =-1 وان كان المتغير =2 تكون قيمة الحقل =0 وهكذا عند ارسال رقم 3 يكون التعديل للحقل send اختيار الكل ورقم 4 للالغاء لنفس الحقل اي ان الكود مكتوب مرة واحدة ويقوم باربعة وظائف ويكون دور ازرار الامر فقط لتحديد قيمة المتغير واستدعاء الاجراء الفرعي ونكتفي بهذا القدر ونترك الامر للاساتذة ولعل يكون لنا عودة في موضوع اخر اخونا الشايب
  13. بعدين لابد ان نعرف اننا لا نتعامل مع خانة اختيار او مجموعة اختيار وانما في هذا المثال نتعامل مع حقل من نوع نعم لا
  14. احنا حددنا اسم الخانة الخاصة بالاختيار rst!drawn الموضوع بسيط بنفس الطريقة للخانة الثانية عند سحب الكل والغاء الكل فقط نعدل السطر السابع الى rst!test=-1 وللالغاء rst!test=0 على افتراض ان اسم خانة الاختيار الثانية test
  15. مشاركة مع الاساتذة بدون الحاجة لاستعلام فقط نتعامل مع مصدر السجلات ونسنده للنموذج الفرعي ثم نستخدم حلقة دوارة تعدل قيمة الحقل في زر الامر اختيار الكل نضع الامر Dim rst As Recordset Dim a As Integer Set rst = Me.Sub.Form.Recordset rst.MoveFirst For a = 0 To rst.RecordCount - 1 rst.Edit rst!drawn = -1 rst.Update rst.MoveNext Next a Me.Sub.Requery وفي زر الغاء الكل نضع Dim rst As Recordset Dim a As Integer Set rst = Me.Sub.Form.Recordset rst.MoveFirst For a = 0 To rst.RecordCount - 1 rst.Edit rst!drawn = 0 rst.Update rst.MoveNext Next a Me.Sub.Requery الملف مرفق الشايب تحديد الكل والغاء الكل.accdb
  16. هل وضعت علامة في خصائص خانة الاختيار لكل خانة ترغبي في تطبيق الكود عليها
  17. العملية بسيطة وممكن الوصول لذلك باكثر من طريقة طريقة استخدام الشروط لكل خانة خيار وهي طريقة تؤدي الغرض ولكنها تستدعي التكرار وصف اسماء الخانات ووو ... لا تعجب اخونا شايب الطريقة الثانية اذا كنا نرغب في تطبيق العمل على مجموعة من خانات الاختيار بدون استثناء ماعدا الخانة التي يتم النقر عليها فيمكن كتابة اجراء فرعي يمر على كافة الخانات في النموذج ويقوم باستبدال قيمتها الى 0 ماعدا الخانة التي تم اختيارها Sub x() Dim ctl As Control For Each ctl In Me.Controls If ctl.ControlType = 105 Then ctl.Value = 0 End If Next ctl Me.ActiveControl = -1 End Sub ويتم استدعاء الاجراء عند النقر x اما اذا اردنا تطبيق الامر على بعض الخانات واستثناء البعض منها فيمكن بدلا من الاشارة الى نوع خانات الاختيار وهي هنا 105 بدلا من ذلك نستخدم خاصية tag ويكون الاجراء Sub x() Dim ctl As Control For Each ctl In Me.Controls If ctl.Tag = "*" Then ctl.Value = 0 End If Next ctl Me.ActiveControl = -1 End Sub ويستدعى بنفس الطريقة في الصورة تم تطبيق الامر على خانة اختيار وقيمتها 105 وخانة تدقيق وقيمتها 106 الشايب
  18. بل سبب المشكلة التعديلات التي تمت على النموذج اما الكود فهو يعمل بشكل ممتاز وتمت كتابتة بناء على المعطيات في الموضوع السابق ولعرض بيانات في نموذج مفرد غير منضم
  19. اتفق معك ان التجربة من اهم وسائل التعلم والحقيقة ان ردي المقتبس ليس موجه لك تحياتي 🌹
  20. ممكن وبعيد عن التعقيدات ممكن نستدعي البيانات باستخدام دالة Dlookup على شكل مصفوفة في حدق عند النقر على الاسم في النموذج الفرعي نضع الامر Dim a, x As Variant a = DLookup("[id]&'|'&[ptitle]&'|'&[pname]&'|'&[code]", "reservation_tbl", "[pname]='" & [pname] & "'") x = Split(a, "|") Me.Parent!ID = x(0) Me.Parent!ptitle = x(1) Me.Parent!pname = x(2) Me.Parent!code = x(3) استدعينا قيمة اربع حقول بمعيار الاسم وممكن اضافة اي عدد من الحقول ولكن لابد من الفصل بينهم باستخدام &'|'& لنتمكن بعد ذلك من تقسيم المصفوفة الملف مرفق اخونا الشايب lab.accdb
  21. ممكن استخدام DLookup كمصفوفة لتحميل قيمة الحقول الاربعة في امر واحد ثم تقسيم المصفوفة على الحقول في النموذج وهذا الامر سيكون اسرع وخصوصا اذا كان البرنامج مستخدم على الشبكة
  22. سبحان الله نعم صحيح ساحاول مستقبلا تحسين خطي والتزام الكتابة على السطر واستخدام الالوان ليتمكن الاخرون من قراءة ما اكتب الشايب
×
×
  • اضف...

Important Information