اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

شايب

03 عضو مميز
  • Posts

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

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

  • Days Won

    2

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

  1. وعليكم السلام بداية لا بد ان نعرف ان هناك انواع من العلاقات راس باطراف اطراف باطراف " تحتاج جدول وسيط يمثل الرأس للطرفين " راس براس والعلاقة الاشهر والاكثر استخدام هي راس باطراف حيث يمثل الراس الجدول الاب هناك اب واحد والاطراف الابناء فيمكن ان يكون هناك اكثر من ابن ولكن الاب واحد وايضا ممكن ان يكون هناك جدول رأس ولايوجد سجلات تابعة في جدول الاطراف ولكن لايمكن اضافة سجلات في الجدول التابع بدون وجود سجل لها في الجدول الرئيس بالنسبة للمشكلة التي تشير اليها قد تعود الى انك تقوم باضافة في الجدول التابع وليس هناك سجل لها في الجدول الرئيسي واعتذر عن الاطالة وانصح بمتابعة الامر مع استاذنا ابو خليل حيث بدأتم العمل في البرنامج معا اخونا الشايب
  2. جرب المرفق باستخدام استعلامين الاول للمتطابقات والاخر استعلام عادي يحتوي على استعلام فرعي لاستبعاد اول سجل من كل سجل مكرر جملة الاستعلام للمتطابقات SELECT t1.الاسم, t1.الاب, t1.الجد, t1.[اسم الام], t1.[اب الام], First(t1.التسلسل) AS Firstمنالتسلسل FROM t1 GROUP BY t1.الاسم, t1.الاب, t1.الجد, t1.[اسم الام], t1.[اب الام] HAVING (((t1.الاسم) In (SELECT [الاسم] FROM [t1] As Tmp GROUP BY [الاسم],[الاب],[الجد],[اسم الام],[اب الام] HAVING Count(*)>1 And [الاب] = [t1].[الاب] And [الجد] = [t1].[الجد] And [اسم الام] = [t1].[اسم الام] And [اب الام] = [t1].[اب الام]))) ORDER BY t1.الاسم, t1.الاب, t1.الجد, t1.[اسم الام], t1.[اب الام]; و للاستعلام الثاني مصدر النموذج SELECT t1.التسلسل, t1.الاسم, t1.الاب, t1.الجد, t1.[اسم الام], t1.[اب الام] FROM t1 WHERE (((t1.التسلسل) Not In (SELECT q_1.Firstمنالتسلسل FROM q_1;))); ربما توجد طرق اسهل ولكن الاخ الفاضل شايب غير متخصص الملف مرفق test(١).accdb
  3. نعم للمبرمج ولكن المقصود من ردي السابق ان هناك العديد من الاوامر ممكن عملها بمعالجات الاكسس وبدون الحاجة الى كتابة اكواد vba لا .. ربما تشابهت عليك الامور استاذ @Eng.Qassim اجابك استاذنا الفاضل ابو خليل في حالتنا استخدمنا النجمة لكون الجدولين متشابهين تماما اما في حالة اختلاف الجداول فلابد من تحديد اسماء الحقول عند اعداد الاستعلام للحقول المطلوب الحاقها ولابد ايضا ان تكون الحقول من نفس النوع اخونا الشايب
  4. نعم ممكن للاستيراد DoCmd.TransferDatabase acImport, "Microsoft Access", "d:\test2.accdb", acTable, "data", "test", False data اسم الجدول المطلوب استيراده test اسم الجدول بعد الاستيراد للتصدير DoCmd.TransferDatabase acExport, "Microsoft Access", "d:\test2.accdb", acTable, "test", "test55", False وومكن في مثل حالة اخينا صاحب الموضوع طالما الجدولين مثماثلين عمل استعلام الحاق من القاعدة القديمة الى الجديدة وعبارة الاستعلام INSERT INTO test IN 'D:\abdoo.accdb' SELECT data.* FROM data; وفي جميع الاحوال الافضل اخيرا الاكسس يقوم بالعديد من المهام بدون الحاجة الى كتابة اكواد ومنها الاستيراد والتصدير للبيانات اخونا الفاضل شايب
  5. من غير الحكمة تجاهل تحذيرات برنامج الحماية و ايقافه لتجربة برنامج وجهة نظر غير ملزمة ولا تعني اتهام او تشكيك في احد وانما الحذر واجب اخونا الشايب
  6. لا لا بل يحسب بشكل صحيح لكن هل جعلت ستجد ان الترقيم صحيح الملف مرفق invoice1.accdb
  7. فكرة اخرى لو جعلت حقل الترقيم في جدول تفاصيل الفاتورة ويبدأ العد في حدث بعد التحديث للحقل ItemCode فلن تظهر كلمة Error ونكتفي بـ Me.txtNewNumber = Nz(DCount("ItemCode", "SalesOrderDetailsT", "SaleID=" & [saleID] & "AND SaleOrder <" & [SaleOrder]), 0) + 1 ونستغني عن الكود الموجود في حدث الحالي للنموذج الفرعي ولكن لو حرف امتناع لامتناع اخونا الشايب
  8. ايضا ومع ما اشار اليه الاخ شايب لتنفيذ الامر بشكل صحيح يتطلب اضافة للحقول الموجودة كود المخالفة حتى لايكون هناك اجتهاد في كتابة نوع المخالفة مثل غائب واخر غياب الي اخره ونحتاج ايضا الى تاريخ المخالفة مثلا موظف غاب يوم الاحد والثلاثاء وتم التسجيل للمخالفتين يوم الخميس فهنا لايوجد تكرار والحديث يطول ولا نريد ان نستغرق في التفاصيل الشايب
  9. لا اتفق معكم يا ابل خليل لان تكرار تسجيل نفس المخالفة وارد وبدل من ذلك يكون هناك حقل تفصيل للمخالفة لسهولة ضبط التكرار وجهة نظر
  10. مشاركة مع الاستاذ سامي المتألق دائما باستخدام dcount بشرطي رقم العامل وتاريخ المخالفة Dim x As Integer x = DCount("*", "المخالفات", " [رقم_العامل]=" & [رقم_العامل] & "and [تاريخ_المخالفة] =" & Format([تاريخ_المخالفة], "\#mm\/dd\/yyyy\#")) If x > 0 Then MsgBox "عدد المخالفات = " & x Else End If للحصول على رسالة بالعدد انقر مزدوج على حقل المعرف وممكن الاستغناء عن الرسالة عن طريق حقل نصي الملف مرفق باستخدام الطريقتين الرسالة والحقل اخونا الشايب Database2.accdb
  11. جرب في حدث الحالي للنموذج Dim ctl As Control For Each ctl In Me.Controls If ctl.ControlType = 109 Then If ctl.Value = "الكلمة" Then ctl.Locked = True Else ctl.Locked = False End If End If Next ctl ممكن تعديل السطر الثالث عن طريق استخدام خاصية التاج اذا اردنا استثناء حقول معينة اخونا شايب
  12. لا مشكلة في حدث قبل التحديث للكمبو0 نضع الامر If Application.CurrentProject.AllReports("sos").IsLoaded = True Then DoCmd.Close ObjectType:=acReport, ObjectName:="sos", Save:=acSavePrompt Else End If الملف مرفق اخونا الشايب Database110(1).accdb
  13. وعليكم السلام بداية اجريت بعض التغيير على القوائم بحيث عند فتح قائمة الدول تكون القائمة الثانية باسماء المسجلين للدولة المختار ثم وضع الشرط لفتح التقرير بمعيارين الملف مرفق Database110.accdb
  14. والله يا اباخليل اني احبك في الله وانت استاذي اولا واخرا
  15. اما اذا اردنا استخدام متغير كما اشار الاستاذ الكبير في الوحدة النمطية نعدل في المتغير الى Public myNumId(1) As Variant غيرنا المتغير ليكون يقبل قيمتين وغيرنا نوعة من رقم الى غير محدد ليقبل اي نوع من الحقول ثم في النموذج الاول نضع الامر myNumId(0) = Me.ID myNumId(1) = Me.Discount DoCmd.OpenForm "frm2", acNormal وفي النموذج الثاني في حدث عند التحميل نضع Me.ID = myNumId(0) Me.Discount = myNumId(1) لم نحتاج الى دالة التقسيم في حال كنت مبتدي وليس لديك معرفة لمعالجة رسائل الخطا فان طريقة الاستاذ الكبير اسهل الملف مرفق db1(2).rar
  16. نعم ممكن حقلين وثلاثة وعشرة وهذا الامر للطريقة التي اشار اليها الاخ شايب وايضا لطريقة الاستاذ الكبير ولكن الاخ شايب سوف يشرح ذلك في الطريقة التي اشار اليها في زر الامر نضع الامر التالي DoCmd.OpenForm "frm2", acNormal, , , acFormAdd, , [ID] & "|" & [Discount] هنا لدينا حقلي المعرف والحسم وفصلنا بينهما بـ & "|" & والهدف من ذلك ان نستخدم دالة التقسيم في النموذج الثاني لفصل قيمة المعرف عن قيمة الحسم ثم في نموذج الوجهة اي النموذج الثاني وضعنا الامر التالي Dim a As Variant a = Split(Me.OpenArgs, "|") Me.ID = a(0) Me.Discount = a(1) الملف مرفق اخونا الفاضل شايب db1.rar
  17. مشاركة مع استاذنا طريقة اخرى بدون استخدام متغير عام تحميل القيمة مباشرة في امر فتح النموذج باستخدام الامر التالي DoCmd.OpenForm "frm2", acNormal, , , acFormAdd, , ID وفي النموذج الثاني في حدث عند التحميل نضع الامر Me.ID = Me.OpenArgs اخير في تعديل الاستاذ الكبير وكذلك في تعديل اخونا شايب يفضل ان تضع امر معالجة الخطأ في حالة كون حقل id في النموذج الاول فارغ والله الموفق
  18. نفس الفكرة والاختلاف في الحدث واستخدامه لحدث الحالي افضل العود قدها الكبير الله والمقصد ان اخونا الفاضل شايب كبير سن وهو لا يدعي انه كبير في العلم ولا يمكن ان يضع نفسه في مصافكم انتم الاساتذة فهو انسان بسيط يشارك بما يعتقد انه مفيد ويتقبل النقد بصدر رحب وخصوصا اذا كان من منصف لا يتبع الاهواء او يكيل الاتهامات بدون دليل تحياتي وتقديري اخونا الشايب 🌹
  19. وعليكم السلام ممكن عملها عن طريق التنسيق الشرطي ومن اسهل الطرق تضليل جقول النموذج المستمر ثم تنسيق شرطي ثم قاعدة جديدة ثم تعبير ونكتب tx2=id tx2 حقل نصي غير منضم ومخفي id هو حقل المعرف ثم في حدث عند النقر او عند التركيز للحقل id نضع الامر tx2=id مرفق مثال اخونا الكبير شايب Database28.accdb
  20. مع اطيب تحية وتقدير لاستاذنا ومعلمنا @ابوخليل عمل جميل وتصميم جذاب ونصائح استفدنا منها كثيرا مع ذلك الطريقة المستخدمة سبق ان حذر منها الاخ شايب وخصوصا ان البرنامج يتعلق بجمع تبرعات واموال تصرف في مواردها الشرعية ولكن هذه الثغرة كبيرة وتعطي لمن يدخل صلاحيات كاملة وامور اخرى تتمثل في امكانية تنفيذ اوامر من خارج القاعدة مثل استعراض بيانات وخذف واضافة وتخريب لبنية البرنامج وهنا سبق الحديث عن هذه الثغرة وطريقة علاجها بشكل مرضي ايضا توجد ثغرة اخرى تسمح بتجاوز فورم تسجيل الدخول من خلال امر من قاعدة اخرى اخيرا الاخ شايب ينبه لما يجد انه يمثل خطورة على البيانات وفقا لعلمه القاصر ويود ان يشير الى الموضوع السابق الذي تحدثنا فيه عن الثغرات ان احد المشرفين والذي لا اتذكره وضع مرفق عالج فيه الثغرتين الاستعلام والامر الخارجي اعتقد هذا الموضوع ان لم تخني الذاكرة ⬇️ والله الموفق مع اطيب الامنيات اخونا الشايب 🌹
  21. لحاجة في نفس يعقوب وامور اخرى الشكر لله اخي مع اطيب امنياتي لك بالتوفيق اخونا الفاضل شايب 🌹
  22. وعليكم السلام اخونا العزيز شايب يجزم ان هذا الكود من عملنا الاخ متقاعد وعلى الرغم من عدم الاقتناع بعمل متقاعد الا انه يمكن تنفيذ ماتريد باضافة السطر التالي rs!feah = fld.Properties("Caption") بعد rs.AddNew الملف مرفق مع عدم الاقتناع اخونا الشايب test2023(1).accdb
  23. الاخ العزيز شايب سبق ان شاهد اكثر من مشاركة تتحدث عن مثل ذلك احداها كانت عن طريق اخونا صاحب معرف متقاعد وقد اشار حينها غفر الله لنا وله الى طريقتين عن طريق الكود والاخرى باستعلام توحيد وان لم يحقق المطلوب فقد تجد في الموقع مشاركات افضل فاستخدم خاصية البحث وخصوصا ان الاخ متقاعد ليس حجة ومشاركاته يشوبها ما يشوبها وَقَد يَخطِئُ الرَأيَ اِمرُؤٌِ وَهُوَ حازِمٌ .. كَما اِختَلَّ في وَزنِ القَريضِ عَبيدُ اخونا الشايب 🌹
×
×
  • اضف...

Important Information