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

شايب

03 عضو مميز
  • Posts

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

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

  • Days Won

    2

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

  1. السؤال للخبراء مع ذلك الاجابة ممكن في زر الامر لفتح التقرير استبدل الامر لديك بالامر التالي DoCmd.OpenReport "yy", acViewPreview, , , acDialog اخونا الشايب yy.accdb
  2. بسم الله عليك ههههه انا انتبهت من امس بس ماعلقت 😃 الشايب
  3. ادخل عرض التصميم للتقرير ثم حدد الحقل او الحقول التي ترغب تطبيق التنسيق عليها ثم تبويب تنسيق ثم تنسيق شرطي
  4. استخدم التنسيق الشرطي Database1(20).accdb
  5. هو نفس الكود السابق ولكن بدلا من تكراره اربع مرات نقوم بتعديل بسيط بداية في اعلى النموذج نعلن عن متغير رقمي 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
  6. جرب المرفق مع عدم الاقتناع بثلاث حقول مفتاح اساسي الشايب DD409.accdb
  7. اخيرا الاخ شايب يرغب في ايضاح اخير قاعدة برمجية عندما يكون لدينا كود يتم استخدامه في اكثر من موضع فمن الافضل تجنب تكرار كتابته وتحويل الكود الى وحدة او اجراء فرعي في النموذج وهنا اشارت الاستاذة الى وجود حقلين من نوع نعم لا واربعة ازرار امر اثنان لاختيار الكل واثنان للالغاء لذا ينصخ اخونا شايب في هذه الحالة بتحويل الكود الى اجراء فرعي واستخدام متغير رقمي في اعلى النموذج تتحدد قيمته من خلال ازرار الامر ونحتاج هنا الى ارقام من 1 الى 4 وفي الاجراء نستخدم Select Case بحيث اذا كان المتغير =1 يكون التعديل للحقل drawn وتكون قيمته =-1 وان كان المتغير =2 تكون قيمة الحقل =0 وهكذا عند ارسال رقم 3 يكون التعديل للحقل send اختيار الكل ورقم 4 للالغاء لنفس الحقل اي ان الكود مكتوب مرة واحدة ويقوم باربعة وظائف ويكون دور ازرار الامر فقط لتحديد قيمة المتغير واستدعاء الاجراء الفرعي ونكتفي بهذا القدر ونترك الامر للاساتذة ولعل يكون لنا عودة في موضوع اخر اخونا الشايب
  8. بعدين لابد ان نعرف اننا لا نتعامل مع خانة اختيار او مجموعة اختيار وانما في هذا المثال نتعامل مع حقل من نوع نعم لا
  9. احنا حددنا اسم الخانة الخاصة بالاختيار rst!drawn الموضوع بسيط بنفس الطريقة للخانة الثانية عند سحب الكل والغاء الكل فقط نعدل السطر السابع الى rst!test=-1 وللالغاء rst!test=0 على افتراض ان اسم خانة الاختيار الثانية test
  10. مشاركة مع الاساتذة بدون الحاجة لاستعلام فقط نتعامل مع مصدر السجلات ونسنده للنموذج الفرعي ثم نستخدم حلقة دوارة تعدل قيمة الحقل في زر الامر اختيار الكل نضع الامر 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
  11. هل وضعت علامة في خصائص خانة الاختيار لكل خانة ترغبي في تطبيق الكود عليها
  12. العملية بسيطة وممكن الوصول لذلك باكثر من طريقة طريقة استخدام الشروط لكل خانة خيار وهي طريقة تؤدي الغرض ولكنها تستدعي التكرار وصف اسماء الخانات ووو ... لا تعجب اخونا شايب الطريقة الثانية اذا كنا نرغب في تطبيق العمل على مجموعة من خانات الاختيار بدون استثناء ماعدا الخانة التي يتم النقر عليها فيمكن كتابة اجراء فرعي يمر على كافة الخانات في النموذج ويقوم باستبدال قيمتها الى 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 الشايب
  13. بل سبب المشكلة التعديلات التي تمت على النموذج اما الكود فهو يعمل بشكل ممتاز وتمت كتابتة بناء على المعطيات في الموضوع السابق ولعرض بيانات في نموذج مفرد غير منضم
  14. اتفق معك ان التجربة من اهم وسائل التعلم والحقيقة ان ردي المقتبس ليس موجه لك تحياتي 🌹
  15. ممكن وبعيد عن التعقيدات ممكن نستدعي البيانات باستخدام دالة 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
  16. ممكن استخدام DLookup كمصفوفة لتحميل قيمة الحقول الاربعة في امر واحد ثم تقسيم المصفوفة على الحقول في النموذج وهذا الامر سيكون اسرع وخصوصا اذا كان البرنامج مستخدم على الشبكة
  17. سبحان الله نعم صحيح ساحاول مستقبلا تحسين خطي والتزام الكتابة على السطر واستخدام الالوان ليتمكن الاخرون من قراءة ما اكتب الشايب
  18. اذا اردنا بقاء نموذج visit_frm غير منضم وبدون اجراء تغيير على النماذج والحقول فمن اسهل الطرق تحميل قيمة الحقول ضمن امر فتح النموذج في مثال الاخت في زر الامر النتائج نضع الامر التالي DoCmd.OpenForm "visit_frm", , , , , , ID & "|" & ptitle & "|" & pname & "|" & code وكما تشاهد حملنا قيمة اربع حقول ويمكن زيادة عدد اكبر من ذلك وفصلنا بين كل حقل والاخر بـ &"|"& والغرض استخدامها كفاصل بين قيمة كل حقل والاخر ثم في نموذج visit_frm في حدث عند الفتح نضع الامر If Not IsNull(Me.OpenArgs) Then Dim k As Variant k = Split(Me.OpenArgs, "|") ID = k(0) ptitle = k(1) pname = k(2) code = k(3) End If اخونا الشايب
  19. مع ان السؤال موجه للاساتذة الكبار جرب في الاستعلام اكتب not null سيقوم الاكسيس بتصحيح المعيار الى Is Not Null وليس not is null وكلاهما يعملان اما في محرر الاكواد فكما اشار ابوخليفة والله اعلم
  20. اذكر قبل سنوات طويلة كانت جميع التطبيقات تعمل على 16 bit بداية ويندوز 1 الى 3.x الى ان اصدرت مايكروا ويندوز 95 يعمل في بيئة 32 ويدعم 16 ولكن لكون ملايين المؤسسات تستخدم نظام 3.11 والخاص بمجموعات العمل اشبه مايكون بويندوز سيرفر فان مايكروا واجهة ضغوطات من العملاء الذين استثمروا في 3.11 والجهة الاخرى الشركات المنتجة للبرامج والتي ترغب الانتقال للبيئة الجديدة ولكن البعض متردد بسبب عدم اقبال ملايين الشركات على ويندوز 95 مما دفع مايكروا باصدار ملف ترقية يتيج امكانية تشغيل برامج 32 على انظمة 16 واعتقد كان اسم الملف win 32s وهو اقرب مايكون ببيئة محاكاة وحتى تنصيب الملف كان يحتاج الى عدة خطوات والحديث هنا من الذاكرة والتي كثيرا ماتخون هذا الامر كان منذ مايقارب 28 عاما الشايب
  21. في اصدار 21 يكون التنسيق الافتراضي لقاعدة بيانات فارغة واعتقد الامر نفسه من اصدار 2016 2000 2002-2003 2007-2016 والسبب ان 2007 الى 2013 متشابهه اما 2016 الاصدار 16.0.7812 فاحدث يدعم رقم كبير فاذا استخدمنا هذا النوع فان الملف لايمكن فتحه بالاصدارات الاقدم والاصدار 2021 يحتوي على حقل من نوع توسيع تاريخ وقت وايضا غير متوافق مع الاصدارات ما قبل 21 ولكن اذا لم نستخدم هذين التنسيقين فان الناتج يمكن فتحه من 2007 الى 2021 والله اعلم
  22. منطقبا لا يعمل بسبب اختلاف المعمارية الانظمة المستندة على معمارية 64x بنية النظام تدعم 64x و 86X بينما الانظمة 86X تدعم فقط 86X و لا تدعم معمارية 64x
×
×
  • اضف...

Important Information