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

متقاعد

الخبراء
  • Posts

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

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

  • Days Won

    25

كل منشورات العضو متقاعد

  1. يا هلا دكتورنا العزيز في البرمجة كل شي ممكن ولكن هنا نتحث عن حالة خاصة ربما الامر الغير ممكن ان نحصل على نتيجة اذا لم تتوفر المعطيات المطلوبة فهنا المطلوب نقل قيمة الحقول حتى المكررة منها وتجميعها في حقل واحد بشكل عمودي ولو اردنا عدم نالتكرار بالتاكيد نحتاج الى تعديل على الكود و لو تلاحظ اني تحدثت عن طريقتين بالكود وعدم التكرار يحتاج الى تعديل وايضا تحدثت عن طريقة اخرى تحقق النتيجة باستعلام توحيد وهذه الطريق لا نحتاج الى تعديل فقط ازالة عبارة all اي تعديل union all في السطر الثالث والسطر السادس الى union وهنا سوف يقوم بجمع البيانات بدون تكرار انا عضو ولست مشرف صحيح كنت في السابق احمل لقب خبير ولكن هذا امر اخر و الحديث في الماضي نقصان عقل ونحن ابناء اليوم تحياتي وتقديري اخي الكريم 🌹
  2. الحقيقة انا امس ايضا عملت على الملف بناء على فهمي للامر لرقم واحد انه يرغب بالترقيم للموظفين بناء على الغرفة واستخدمت دالة dmax بشرط رقم الغرفة مثلا غرفة 1001 يكون الترقيم من 1 الى نهاية سجلات النموذج الفرعي وغرفة 1002 ايضا من 1 الى .. وبالنسبة لرقم 2 اضفت في الجدول حقل من نوع نعم لا واستخدمت if و dsum بشرطين رقم الغرفة وحالة الحقل الجديد فاذا كانت القيمة لا لكل سجلات الفرعي للغرفة يكون المبلغ الاجمالي للسجلات واذا كانت هناك حقول نعم يجمع هذه الحقول فقط ولكن عند دخولي وجدت ردك مع عدم التيقن بان فهمي صحيح فتوقفت وتركت الامر لكم اخي قاسم تحياتي
  3. الشكر لله اخي ليس من الضروري تجربتها طالما انت وصلت للحل بالطريقة السابقة واشارتي لاستعلام التوحيد فقط لغرض الحديث عن حلول اخرى واثراء للموضوع فقط تحياتي
  4. اود ان اوضح انه في مثل هذه الحالات البسيطة فقط دمج ثلاث حقول من جدول الى حقل في جدول اخر بشكل عمودي ممكن ان نصل للنتيجة بدون الحاجة الى اكواد وبعدة طرق ومن باب تعدد الحلول سوف اشرح طريقة واحدة اضافية وقبل ذلك من المعلوم ان لدينا انواع متعددة من الاستعلامات ومنها استعلام توحيد وهذا النوع يستخدم في العادة لدمج حقول متشابهه من جدولين او اكثر في استعلام واحد ولكن ايضا ممكن دمج حقول من نفس الجدول لذا ممكن ان نصيغ جملة الاستعلام بالشكل التالي SELECT [The Main].[no], [The Main].dx FROM [The Main] union all SELECT [The Main].[no], [The Main].dd FROM [The Main] UNION ALL SELECT [The Main].[no], [The Main].dh FROM [The Main]; والخطوة التالي نعمل استعلام الحاق مصدر بياناته استعلام التوحيد INSERT INTO sd ( id, a ) SELECT q_1.[no], q_1.dx FROM q_1 ORDER BY q_1.[no]; ونحصل على نفس نتيجة استخدام الاكواد تحياتي
  5. ولك مثل ذلك بعون الله لا يوجد تعب والامر هين اخي الكريم تمنياتي لك بالتوفيق وعيدكم مبارك
  6. ملاحظة تجنب تسمية الاحقول بالارقم الملف مرفق Database51.accdb
  7. استبدل الكود في زر الامر بالتالي Dim rst As DAO.Recordset Dim rs As DAO.Recordset Dim fld As Field Dim a As Integer Set rst = CurrentDb.OpenRecordset("the main") Set rs = CurrentDb.OpenRecordset("sd") For a = 1 To rst.RecordCount For Each fld In rst.Fields If fld.Name = "28" Or fld.Name = "280" Or fld.Name = "281" Then rs.AddNew rs!a = fld.Value ' rs!id = rst!no rs.Update End If Next fld rst.MoveNext Next a rst.Close: Set rst = Nothing rs.Close: Set rs = Nothing ولو تضع عمود id تنقل له الرقم no للمحافظة على التسلسل اذا رغبت بذلك اضف حقل id في جدول sd ولا تجعله مفتاح اساسي وفي السطر 12 من الكود الغي علامة . من بداية السطر تحياتي
  8. ممكن ذلك Dim rst As DAO.Recordset Dim rs As DAO.Recordset Dim fld As Field Dim a As Integer Set rst = CurrentDb.OpenRecordset("tbl_1") Set rs = CurrentDb.OpenRecordset("tbl_2") For a = 1 To rst.RecordCount For Each fld In rst.Fields If fld.Name <> "id" And fld.Name <> "item" Then rs.AddNew rs!a = fld.Value ' rs!Item = rst!Item rs.Update End If Next fld rst.MoveNext Next a rst.Close: Set rst = Nothing rs.Close: Set rs = Nothing عملته بشكل سريع وليس لدي وقت للمراجعة مرفق مثال صغير تحياتي Database151.accdb
  9. وبالنسبة للقارئ هذا ⬇️ الموضوع يفيدك
  10. لمعرفة كيفية استخلاص المعلومات لابد من معرفة ماذا تمثل ارقام الهوية مثال : SA0380000000608010167519 الرقم هو رقم ايبان وهمي لاحد البنوك ممكن ان نستخلص من المعلومات التالية sa تعني انه بنك سعودي 03 رمز تحقق مرجعي بعض الدول يمثل الفرع وبعضها يستخدمه للتحقق من التحويل 80 رمز البنك مثلا 80 بنك الراجحي 79 بنك البلاد اسما البنوك هنا لغرض الايضاح فقط 608010167519 يمثل رقم حسابك الشخصي وكذلك الامر مع رقم الهوية لبعض الدول حيث يمثل كل جزء من الرقم دلالة على تاريخ الميلاد والجنس ومكان الميلاد الخ لذا لو كانت لديك او لاحد الاخوان معرفة بما تمثله ارقام الهوية يمكن عمل ماتريد اخيرا بعض الدول لا تستخدم هذه الطريقة ولمعرفة المعلومات لابد من جهاز قارئ للبطاقة وقد يتطلب تصريحات امنيه لاستخدامه تحياتي
  11. الامر مبهم قليلا اذا كان المطلوب كما في الصور المرفقة فيمكن عمل كود بحلقتين دوارة الحلقة الاولى تمر على سجلات الجدول والحلقة الاخرى تمر على الحقول لكل سجل ثم تنشئ سجل في الجدول الجديد بحيث تضع الحقول متتابعة في حقل واحد لكل صنف الصور مرفقة
  12. التعديل ☝️باذن الله يحقق المطلوب ولكن لابد من الانتباه الى انه سوف يجمع عدد الاصناف وفقا للحركة والنوع حتى لو اختلف اسم الصنف مثلا في نفس الحركة ادخلنا 20 كرتون زيت و10 كراتين زيت و15 كرتون مواد كيماوية و5 كراتين مواد كيماوية و 10 كراتين بترو كيمكال مركز الناتج حسب هذه الطريقة يكون 60 كرتون بينما الاحصائية الصحيحة تكون 30 كرتون زيت و20 كرتون مواد كيماوية و10 بترو كيمكال لو تلاحظ اني كررت الصنف ☝️ بما يشابه طريقة عمل ملفك بالتأكيد يمكن اضافة شرط ثالث برقم الصنف ولكن الامر سيكون غير عملي لانه يتطلب الانتقال الى رقم الصنف لذا فان الافضل ان تكون الاجماليات من خلال تقرير واذا كان الامر يمثل اهمية اكثر من كونه امر تجميلي للشاشة فحينها يمكن عمل نموذج مساعد برقم الحركة يعطي احصائية للمجاميع برقم الصنف والحركة والنوع ويكون مصدر النموذج استعلام وبدون الحاجة لاستخدام دالة dsum ولا اضافة معايير معقدة وخصوصا ان استخدام دوال تجميع المجال بشكل كبير قد يبطى من عمل البرنامج وخصوصا عند ربط البرنامج بالشبكة حيث يمثل كل استخدام تنفيذ استعلام ويكون الامر اكثر وضوح كلما زاد عدد السجلات تحياتي
  13. فقط اضف معيار رقم الحركة لكل نوع =Nz(DSum("[Odb_Qty]";"[Odb_PlaningMonthe_ForCost_ProdactionSUM]";"[Odb_Type] Like 'كرتون'" & " and [odb_id]='" & [Odb_ID] & "'");0) الملف مرفق FGHF.accdb
  14. ماشاء الله استاذ احمد لدي تعليق صغير على كود الاستاذة لميا في حقل الجنس " AND [Gender] Like '*" & [txtGender] & "*'" & _ هنا استخدمت معيار like مع النجمة قبل وبعد حقل الجنس لكونها ارادت استخدام فلترة متعددة لعدد من الحقول وبالتالي لو كان البحث بمعايير ليس من ضمنها الجنس سوف تعود بنتيجة صحيحة والامر يعمل بدون مشاكل والسبب انها استخدمت حرف f للانثى و m للذكر ولكن لو انها استخدمت الكلمة كاملة female و male فلن تحصل على نتيجة صحيحة عند البحث عن كلمة male لماذا لان علامة النجمة قبل الحقل تعوض عن الاحرف الغير معروفة وهذا الامر يغفل عنه البعض ولا اقصد الاستاذة لانها استخدمها هنا كان محدد بحرف واحد لذا في مثل هذه الحالات عندما نستخدمة الكلمة كاملة لا نستخدم * مع like وانما نستخدم nz مع النجمة ليكون الامر " AND [Gender] Like '" & Nz([txtGender], "*") & "'" & _ مجرد ايضاح بسيط ربما يفيد احدكم اخيرا قد يقول قائل انا اريد استخدام female و male ولكن لا ارغب في كتابة الكلمة كاملة ارغب فقط بكتابة الحرف الاول فقط فما هو الحل اكسس يتيح لنا استخدام النجمة ايضا في حقل البحث شاهد الصورة تحياتي
  15. ماشاء الله تبارك الله امر غير مستغرب منكم ليس دائما ولكن الى حد ما فالهمة والعزم والطموح والارادة والرغبة تختلف من شخص الى اخر و من مرحلة الى اخرى يقول الله عز وجل " اللَّهُ الَّذِي خَلَقَكُمْ مِنْ ضَعْفٍ ثُمَّ جَعَلَ مِنْ بَعْدِ ضَعْفٍ قُوَّةً ثُمَّ جَعَلَ مِنْ بَعْدِ قُوَّةٍ ضَعْفًا وَشَيْبَةً يَخْلُقُ مَا يَشَاءُ وَهُوَ الْعَلِيمُ الْقَدِيرُ " وقوله سبحانه " وَاللَّهُ خَلَقَكُمْ ثُمَّ يَتَوَفَّاكُمْ ۚ وَمِنكُم مَّن يُرَدُّ إِلَىٰ أَرْذَلِ الْعُمُرِ لِكَيْ لَا يَعْلَمَ بَعْدَ عِلْمٍ شَيْئًا ۚ إِنَّ اللَّهَ عَلِيمٌ قَدِيرٌ " مع الاعتذار لصاحب الموضوع عن الاستطراد ولكن قد يشفع لي ولك اننا اشرنا الى عدة طرق للفلترة والبحث ربما يستفيد منها احدهم تحياتي وتقديري ولنا لقاء في موضوع اخر باذن الله
  16. كل عام وانتم بخير تقبل الله منا ومنكم صالح الاعمال وعيدكم مبارك
  17. طبعا هناك فلترة وهناك بحث والفرق ان الفلترة تظهر فقط ما يطابق معيارها اما البحث فتبقى السجلات في النموذج وينتقل التركيز للسجل المطابق لمعيار البحث مثال الامر DoCmd.FindRecord له سبعة معلمات FindWhat و Match و MatchCase و Search و SearchAsFormatted و OnlyCurrentField و FindFirst مثال لو اردنا البحث برقم الايدي للموظف Me.id.SetFocus DoCmd.FindRecord tx2, , True, , True في البداية نقلنا التركيز لحقل id ثم بحثا عن القيمة التي فيه مطابقة للمكتوب في حقل البحث tx2 وايضا ممكن نكتبة الامر هكذا Me.id.SetFocus DoCmd.FindRecord tx2, , , , , acCurrent وممكن نستخدم المعلمات التي سبق الاشارة لها لبحث اكثر تركيز لمطابقة حالة الاحرف افضل دائما استخدم هذا الامر مع معرف فريد للحصول على نتيجة صحيحة اتفق مع ولكن اتمنى ان يكون من خلالكم او احد الاساتذة في الموقع فانا معلوماتي قديمة واشارك بما تجود به ذاكرتي والتي كثيرا ما تخذلني تحياتي وكل عام وانتم بخير
  18. مشاركة مع الاستاذ قاسم ممكن اختصار الكود الى Me.Filter = "[id]=" & Me.c_2.Column(0) Me.FilterOn = True او كتابته هكذا DoCmd.ApplyFilter , "[id]=" & Me.cbo1.Column(0) او بدون الحاجة الى اكواد من خلال وضع معيار في خانة المعرفة في الاستعلام مصدر بيانات النموذج Like "" & [Forms]![نموذج1]![c_2] & "" يمكن استخدام النجمة لعرض كافة السجلات قبل التصفية ويمكن ايضا البحث بدون فلترة وهنا سيتم نقل المؤشر للسجل المطلوب DoCmd.SearchForRecord acDataForm, "نموذج1", acFirst, "[id]=" & Me.c_2.Column(0) انا غيرت اسم حقل المعرف الى id لكونه اسهل عند كتابة الاكواد تحياتي
  19. فعلا واجهتني نفس المشكلة وتوقفت عن المحاولة الحقيقة من اسباب نجاح البرنامج ان يؤدي الهدف الذي صمم من اجله وان يتميز بالسهولة لذا لابد للبرنامج ان يمر بفترة تجربية وان يشارك مستخدموا البرنامج في ابداء ملاحظاتهم لكونهم العنصر الاهم في نجاح اي عمل وفي البرامج التي فيها ادخال بيانات بشكل كبير لابد ان يراعي مصمم البرنامج ذلك من خلال بعض النقاط التي ساتحدث عنها بايجاز مربعات النص لحفول القيم الثابتة اسهل بكثير على مدخل البيانات من القوائم المنسدلة وخصوصا ان المطلوب ادخال رقم فقط مثلا 1=مصر 2=سوريا الخ وبعد فترة تجد ان مدخل البيانات حفظ الرموز استخدام كود يحدد الحقول التي غفل عن ادخالها مدخل البيانات مع تمييز هذه الحقول بالوان وانتقال المؤشر لاول حقل فارغ بدلا من حذف كافة الحقول في اي برنامج من هذا النوع تجد ان هناك حقول تتشابه قيمتها لعدد كبير من الطلاب مثلا الجنسية مكان الميلاد مكان الاقامة الخ فلا داعي لاعادة كتابتها لكل طالب بل يكفي ان نعمل كود بسيط ونستخدم احد مفاتيح لوحة المفاتيح وعند انتها من تسجيل الطالب الاول ننقر مثلا f8 فينقلنا الى سجل جديد ويقوم البرنامج باضافة هذه البيانات او حتى ننتقل الى اي طالب سبق تسجيله لنقل هذه البيانات استخدام قناع الادخال امر مزعج والافضل تجنب استخدامه كلما امكننا ذلك وكذلك الحال قاعدة التحقق من الصحة وحدث عند الخروج ولا يعني عدم استخدامها نهائيا فاحيانا نظطر لذلك هي وجهة نظر غير ملزمة مع الاعتذار للاخ بلال ولكني استغرقت وقت طويل لتسجيل طالب ومع ذلك لم اوفق تحياتي وكل عام وانتم بخير
  20. تم تصحيح خطا في تقرير الاهداف المنتهية الملف مرفق برنامج اعداد الخطط لمركز السلام(2).accdb
  21. لا مشكلة استاذ طاهر حتى لو اردت جمع الفكرتين مع اني لا اجد فائده من ذلك يكون الامر في حدث عن عداد الوقت dd = dd + 1 If dd = Val(x) Then Me.TimerInterval = 0: x = 0 وفي زر الامر dd = 1 x = DCount("*", "tbl_item") Me.TimerInterval = x هنا يكون x هو ناتج عدد سجلات الجدول الملف مرفق 145(1).accdb
  22. لا اخي الامر ليس كذلك من يملك الحقيقة المطلقه هي افكار ووجهات نظر وكل منا ينظر للامر من زاوية معينه تحياتي
  23. العنوان عد السجلات وفي الموضوع طلب عداد من 1 الى x في حدث عند عداد الوقت ضع التالي dd = dd + 1 If dd = Val(x) Then Me.TimerInterval = 0: x = 0 في زر الامر ضع التالي dd = 1 Me.TimerInterval = x الملف مرفق 145.accdb
×
×
  • اضف...

Important Information