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

منتصر الانسي

المشرفين السابقين
  • Posts

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

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

  • Days Won

    10

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

  1. بعد إذن أخي @ابوخليل قمت بعمل حل بسيط أرجو أن تستفيد منه ملاحظتي لك أنه يجب أن يكون مصدر بيانات النموذج هو الجدول أو إستعلام تحديد بسيط وليس كما كنت عاملة إستعلام تجميع فهذا يجعل بيانات النموذج غير قابلة للتعديل قمت بإضافة حقل وقت الإنتهاء كفكرة إضافية ولتوضيح كيف أن وقت إنتها شخص هو وقت إيتداء الشخص الذي يليه كل مرة تقوم بفتح النموذج سيتم مسح بيانات الثلاثة أعمدة لغرض المثال فقط ويمكنك مسح حدث عند التحميل تحياتي ED.rar
  2. تفضل أخي الكريم مرفق بهذا ملفك الأصلي بعد تصفيته من جميع الكائنات الغير ضرورية وتنفيذ كل ماهو مطلوب تحياتي db1.rar
  3. شكرا للاخ @ابوخليل بالفعل هذه ملاحظة في غاية الأهمية وكان يجب ذكرها
  4. شكرا أخي الكريم على تقبلك للملاحظات بسعة صدر وترحيب كما هو واضح في ردك وهذا من أهم ما يميز كل من أراد أن يتعلم والحقيقة صار لي فترة أحدث نفسي بأن أعمل موضوع خاص لشرح إصطلاح التسمية خصوصا عندما أرى كثير من التطبيقات الخاصة بالأعضاء ورغم الجهد الواضح المبذول في هذه التطبيقات إلى أنهم مايزالوا متجاهلين (بعلم أو بدون علم) للطرق السليمة عند تسمية الكائنات الخاصة بتطبيقاتهم (مكتوبة باللغة العربية وتحتوي على مسافات ...) ولايعلمون أنهم بتجاهلهم هذا يتسببون بضياع الكثير من الجهد والوقت وأحياناً قد يؤثر على أداء تطبيقهم وجاء هذا الموضوع كفرصة أريد إستغلالها لتسليط الضوء على موضوع تسمية الكائنات والذي لا تقتصر أهميته على من يعمل في أكسس فقط بل لكل من يعمل بالبرمجة بشكل عام تأكيداً لما جاء في ملاحظات الأخ @Foksh فإن طريقة تسمية الكائنات من أهم الأمور التي يجب مراعاتها من بداية العمل لأن مشاكلها ستظهر في مراحل لاحقة والتي غالبا مايكون تكلفة إصلاحها أكبر من تكلفة غيرها من المشاكل شروط التسمية بسيطة وأهم شرطين هما إستخدام الحروف الإنجليزية وأن تكون بدون مسافات (لاحظ أن الشرط الأول بخط أحمر وتحته خط لأهميته والثاني أحمر باهت بدون خط لأن تأثيره أقل ولكنه أيضا مهم) وحتى ولو كانت لغتك الإنجليزية ضعيفة يكفي أن تكون منطوقة كما هي بالعربي ولكن بحروف إنجليزية (مثلا جدول بيانات الطلاب يمكن تسميته bianat_tollab وهذا أقل مايمكن عمله فهذه التسمية صحيحة وستعمل بدون أي مشاكل ولكنها ستكون صعبة لأي شخص آخر فالإسم Students_Data ستكون مفهومة أكثر ... أليس كذلك ؟؟؟ 🤫) النقطة الثانية التي جاءت في ملاحظات الأخ @Foksh وهي طريقة تنسيق التسميات ويمكن إعتبارها ملاحظات تختص بالشكل أو المظهر أكثر وهي ليست بنفس أهمية الأولى ولكنها لاحقا تجعل العمل أكثر سهولة ومن أهم التنسيقات مايلي - كما ذكرنا آنفا فأن علينا تجنب المسافات الفاصلة بين الكلمات فبدل أن نقوم بكتابة إسم جدول بيانات الطلاب بهذا الشكل bianat tollab كتبناه بهذا الشكل bianat_tollab وأستعضنا عن المسافة بالشرطة السفلية وكذلك طرق كتابة الإسم بشكل أكثر تنسيقا منها تنسيق طريقة الجمل "camelCase" أو طريقة باسكال "PascalCase" (وهي التي ذكرها الأخ فادي والتي أستخدمها شخصياً) وهي دمج الكلمات بدون مسافات وعلى أن يكون أول حرف من كل كلمة حرف (كبير Capital) وكمثال فإن إسم جدول بيانات الطلاب المذكور في مثالنا سيصبح بهذا الشكل BianatTollab - البادئة أو (Prefix) وهي عبارة عن عدد من الحروف (غالبا 3 حروف صغيرة Small) وتمثل (نوع الكائن - عنصر التحكم - المتغيرات - نوع البيانات) فمثلا الجداول تبدأ بالبادئة tbl والاستعلامات بـ qry والنماذج بـ frm ...الخ ويمكن إضافة حرف أو حرفين لها لتخصيص الكائن فمثلا البادئة frm الخاصة بالنماذج يمكن إضافة حرف s أو sb لها لتصبح sfrm أو sbfrm إذا كان النموذج فرعي ... وهكذا !!! وإذا أردنا تطبيق البادئة على مثال جدول بيانات الطلاب فسيصبح بهذا الشكل tblBianatTollab ملاحظة يجب ذكرها هنا وهي أنه يمكن لأي شخص عدم التقيد بما جاء هنا وإستخدام إي إصطلاحات تسمية خاصة به فيمكن إستبدال بادئة الجداول بالبادئة tb او abc او xyz فليس لهذه الحروف أي معنى إلا لمن يستخدمها وكذلك طريقة التنسيق فهناك من يستخدم الحروف الكبيرة أو الصغيرة أو طريقة الجمل أو طريقة باسكال الموضحة هنا المهم هنا هو التعرف على المفهوم لا أكثر هذه هي أهم النقاط التي يجب مراعاتها أثناء تسمية كائنات قاعدة البيانات وتعتبر طرق التسمية من أهم مواضيع البرمجة التي لايمكن توضيحها من خلال هذه المشاركة البسيطة وأنصح بالبحث عن (إصطلاحات التسمية أو Naming Conventions) للحصول على معلومات أكثر وإعتماد طريقة تسمية والإلتزام بها في جميع التطبيقات الخاصة بك تحياتي
  5. ماشاااء الله إبداااع يعمل بطريقة مدهشة عظمة على عظمة صراحة 👏👏👏 الأخ @Foksh مثل الطبيب الذي شخص المرض وعالجه بأفضل دواء
  6. غريب!!!! مع انه يعمل معي بنجاح حتى أني جربته الآن للتأكد قد يكون السبب أحد سببين إما ان لوحة المفاتيح الثالثة ظهرت قبل أن تعدل الكود أو قد يكون بسبب نظام الويندوز عموما وحتى نقطع الشك باليقين سأرفق لك نفس المثال بعد أن قمت بتحديد اللغة فيه إلى Arabic_Jordan وأريدك أن تفتحة وأنت متأكد من عدم وجود أي لغات إضافية تظهر للوحة المفاتيح جربه وأخبرني بالنتيجة تحياتي Keyboard Layout.rar
  7. اعتقد أني وجدت الحل وبكل صدق لولا تشخيص الأخ @Foksh لسبب المشكلة ما كنت لأستطيع التوصل له فجزاه الله كل خير أثناء بحثي عرفت أنه توجد دالة API إسمها ActivateKeyboardLayout تقوم بتغيير لغة لوحة المفاتيح وفقاً لكود اللغة لكل دولة فقمت بنسخها وأنشأت وحدة نمطية وعرفت فيها هذه الدالة فيها كدالة عامة قمت بإضافة تعداد بأكواد اللغة العربية لجميع الدول العربية بالإضافة للغة الإنجليزية (الولايات المتحدة لمن تعمل أنظمتهم بتخطيط لوحة المفاتيح en_US أو المملكة المتحدة لمن تعمل أنظمتهم بتخطيط لوحة المفاتيح en_UK) وقمت بإنشاء دالة عامة لربط ActivateKeyboardLayout بهذه القائمة لتظهر قائمة الدول أثناء الإدخال لتسهيل تحديد الدولة والحقيقة بعد تجربتها فاجأتني النتيجة لم يظهر لي أي تخطيط لغة إضافي رغم أن اللغة تتغير حسب كل مربع نص اثناء التنقل خلال النموذج أترك لكم المثال الذي قد وضحت فيه بعض الأمور المطلوبة من كل من يريد تجربته (من خارج اليمن طبعاً 😅) تحياتي Keyboard Layout.rar
  8. اخي الكريم لو تلاحظ فإن كل الحلول متفقة أن إعادة تعيين لغات لوحة المفاتيح لن تتم إلا بإعادة تشغيل النظام أو على الأقل تسجيل الخروج ومسألة إخبار المستخدم أفضل من أن يتفاجأ بإعادة التشغيل وخسارة أي أعمال أخرى أعتقد أن المشكلة مرتبطة بنظام أكسس فمهما حذفت اللغات الزائدة فبمجرد فتح تطبيق أكسس ستعود المشكلة وكأن شيئاً لم يكن مما توصلنا له إلى الان فأمامنا حل من إثنين إما عبر الكود وهذا يتطلب إعادة التشغيل - أو تسجيل الخروج أو إعلام المستخدم شفهيا بأنه إذا كان متضايقا من تعدد لغات لوحة المفاتيح بأن عليه إعادة تشغيل النظام هذا رأيي إلى الآن مالم نجد طريقة أخرى يبدو انك لم تفهم قصدي بتعديل الخصائص في المثال انا عدلت الخصائص لغرض الشرح لمعرفة تأثير تعديل الخاصية إلى system لاغير وليس هناك أي ضرورة للتعديل تحياتي
  9. أخي الكريم في إعتقادي أن هذه المشكلة أكثر من يعاني منها هم المبرمجين لأن المبرمج مضطر لتنقل بين اللغات الإنجليزية عند كتابة أسماء كائنات البرنامج وكتابة الاكواد والعربية عند كتابة الرسائل والتسميات التوضيحية وخلافه أما مايخص المستخدم فأنت كمبرمج يفترض أنك قد ضبطت خصائص عناصر التحكم بحيث وبمجرد إنتقال المؤشر إلى عنصر تحكم محدد للغة العربية يقوم التطبيق بتحويل اللغة للعربية بدون أي تدخل من المستخدم وإذا إنتقل لعنصر تحكم محدد للغة الإنجليزية سيتم تحويل اللغة بسهولة سيقول قائل سيكون هذا الكلام صحيح طالما المستخدم يعمل داخل التطبيق الذي قمنا بتطويره ولكن بمجرد إغلاقه والعودة للعمل مع التطبيقات الأخرى ستظل المشكلة قائمة نعم هذا الكلام صحيح ولكن ولحل هذه الجزئية نرجع للمثال الخاص بالأخ @Foksh والذي أريد وقبل كل شيئ أن أرفع له القبعة على تشخيصه لسبب المشكلة والحقيقة أنها معلومة غاية في الأهمية وكنت أجهلها فشكرا جزيلاً له ولكن .... 🫣 فأنا أري أن جميع جهوده السابقة الخاصة بتحويل اللغة غير ذات أهمية لحل المشكلة تحديداً (هذا لايعني أنها غير مفيدة في أعمال أخرى بالعكس الفكرة جميلة جداً وقد أستفدت شخصيا من الكود الذي جاء في المثال والذي سيتم الإعتماد عليه في المثال المرفق بهذه المشاركة) لقد بنيت هذا الرأي لسبب بسيط فطالما أن مثال الاخ @Foksh يؤدي إلى إعادة تشغيل النظام فلسنا بحاجة لكل تلك الأوامر الخاصة بتعديلات الريجستري وكان بالامكان الاكتفاء بالسطور التي تقوم بإعادة تشغيل الجهاز وتنحل المشكلة بل وأزيدكم من الشعر بيت فيمكن حل هذه المشكلة بمجرد إجراء تسجيل خروج من النظام فقط بناء على كل ماسبق قمت بإرفاق مثال يوضح الفكرة التي أقصدها والتي في رأيي يمكن من خلالها معالجة المشكلة بأبسط طريقة لاتسبب الإزعاج للمستخدمين أرجو أن تعجبكم الفكرة وانا في إنتظار أي ملاحظات أو أفكار للتحسين تحياتي Keyboard language.rar
  10. رغم أني لم أجرب هذه الطريقة من قبل ولكني وبنظرة سريعة على الملف المرفق أعتقد أنه لاتوجد مشكلة فيها فقد قمت بتجربة إضافة أكثر من مليون سجل ولم يتأثر كلا من الترقيم التلقائي و حجم القاعدة بعد أن قارنت الحجم بوجود التنسيق وبدونه هناك طرق أخرى لتطبيق نفس التنسيق على أي رقم بإستخدام دالة Format فلو إفترضنا أن الحقل ID هو ترقيم تلقائي بدون اي تنسيق إضافي يمكنك الحصول على نفس النتيجة هذه في الاستعلام أو النماذج بهذا السطر Format([ID];"0000000") ويوجد هناك طرق أخرى لتخصيص الترقيم التلقائي يمكنك التعرف على بعضها في هذا الموضوع هنا وقد تجد أيضا الكثير من الطرق بالبحث في المنتدى
  11. اها أنت تتكلم هنا أثناء عملك كمطور ومبرمج ففي هذه الحالة كلنا نعاني نفس المشكلة 😅 انا ظننت ان المشكلة نتيجة شكاوى المستخدمين تحياتي
  12. مع إحترامي لجميع المشاركين ولكن وبصراحة لا أعرف ماهي المشكلة التي يتسبب بها ظهور لوحة مفاتيح أخرى طالما أنها لا تؤثر على الأداء أو تتسبب بأخطاء برمجية فهل بالأمكان أن ننعرف عن أهم مشكلة / مشاكل (من باب العلم بالشيء) أو قد يكون هناك حل للمشكلة بطريقة أخرى بدون التعديل على الريجستري تحياتي
  13. ملاحظة بسيطة للأخ @أحمد العيسى في طريقة الأخ @Foksh إعتبر أن أي رقم قومي يبدأ بالرقم 2 فسيكون صاحبه من مواليد ماقبل عام 2000 مالم فسيكون من بعد عام 2000 وهذا لم يؤخذ بالإعتبار في الدالة Date_Sex_Province صراحة لا أعلم إذا ما كانت هذه الملاحظة ذات أهمية أم لا ولكن ذكرتها كتنبيه عن الاختلاف بين الحلين فإذا كان الإختلاف مهم فسيكون تأثيره كبير تحياتي
  14. هذا صحيح عموما الكرة الان في ملعب صاحب الموضوع لإختبار الحلين وإعتماد مايناسبه او الافادة بأي ملاحظات
  15. إذا كانت هذه هي البساطة فبماذا سنسمي طريقتي إذا 😅 عموما هذه طريقة أخرى وأعتقد أنها ستكون مفيدة عند طباعة جداول أكثر من طالب (كون مثال الاخ @Foksh يعتمد على رقم الطالب المحدد في النموذج كمعيار لتصفية البيانات) لكن وبصراحة فأنا لست متأكد من أداء هذا الحل مع أكثر من طالب أو أكثر من فترة أو فصل دراسي لذلك فيفضل أن تقوم بإجراء التجارب والافادة عن النتائج والملاحظات تحياتي Timetable25.rar
  16. تم تعديل المثال مع توضيح العمل بطريقتين تحياتي basetimes.rar
  17. تم إضافة إستعلام تحديث لتنفيذ العمل تحياتي base_mat.rar
  18. قمت بالتعديل على ملفك وإن شاء الله يكون هو الحل المطلوب كل شيئ موضح في الملف المرفق تحياتي basetimes.rar
  19. هذا الإستعلام سيظهر كل رقم وأكبر تاريخ له SELECT usrID, Max(lstDate) AS MaxOflstDate FROM tblEshtrakatTsdeed GROUP BY usrID; ولإظهار بقية السجلات (التي لا تساوي أكبر تاريخ) SELECT usrID,lstDate FROM tblEshtrakatTsdeed WHERE (((lstDate) Not In (SELECT Max(tblEshtrakatTsdeed.lstDate) AS MaxOflstDate FROM tblEshtrakatTsdeed GROUP BY usrID HAVING (((tblEshtrakatTsdeed.usrID) = [usrID]));))); يمكن تحويل هذا الإستعلام إلى إستعلام حذف ليقوم بحذف جميع السجلات التي تاريخها أصغر من أكبر تاريخ لكل شخص تحياتي
  20. أنت لم توضح هل تريد الإحتفاظ بهذا الترقيم في الجدول أم تريده كحقل محتسب في الإستعلام وإذا كنت تريد الإحتفاظ به في الجدول فهل تريد أن يتم الترقيم أثناء الإدخال أم إجراء تحديث لعدة سجلات عموما هذا حل على السريع لإظهار الترقيم في إستعلام ويمكنك من خلاله مشاهدة الترقيم في الاستعلام أو تحويله إلى إستعلام تحديث لتحديث قيمة عمود الترقيم بقيمة العمود المحتسب تحياتي base_mat.rar
  21. التعديل السابق كان على عجل لذا قمت بتحسين الدالة في المثال لتصبح أكثر عملية (اصبحت أشبه بدالة Partition) بحيث يمكن إستخدامها في أي مكان يتطلب تقسيم السجلات الى فئات (كتجميع الموظفين حسب الفئة العمرية مثلا) التطبيقات للدالة كثيرة ويمكن لأي شخص إستخدامها بحسب ماتتطلبه حاجته تحياتي 1.rar
  22. انا مع الأخ @Foksh بأن لديك مشكلة في تسمية الحقول والتي تسبب الكثير من المشاكل على كل حال الآن الإستعلام يقوم بإلحاق نفس السجل وذلك لأن المعايير المحددة له واضحة فأنت تقول له أن يقارن قيم الحقول بالقيم من النموذج الفرعي ويعتمد الحل المطلوب على أحدى الحالتين التاليتين - إذا كنت تريد مقارنة الحقول مع القيم الموجودة في النموذج الفرعي الأعلى فيجب تعديل معايير الإستعلام لتشير إلى النموذج الفرعي sfVaca200 وليس sfVaca - اما اذا كانت القيم المستخدمة كمعيار بحث موجودة في النموذج الفرعي الاسفل فيجب إجراء Requery للنموذج الفرعي فكما لاحظت فإن محتوياته لا تتغير مهما كان إختياري من القائمة تحياتي
  23. اليك تعديل عالسريغ بإمكانك تعديله حسب رغبتك تحياتي 1.rar
  24. المشكلة تظهر لشهري 8 و 9 وليس 9 فقط والسبب هي وجود قيم فارغة في الحقل Add_Days التابع للجدول moa_details الان لديك حلين إما تعبئة الحقول الفارغة بالقيمة 0 أو إستخدام دالة Nz في الإستعلام تحياتي
×
×
  • اضف...

Important Information