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

nssj

03 عضو مميز
  • Posts

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

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

كل منشورات العضو nssj

  1. كنت أستخدم خاصية Lookup (مربع قائمة – قائمة تحرير وسرد) بكثرة في الجداول عندما كنت أريد حصر البيانات المدخلة ضمن قائمة معينة .. وتعلمت استخدامها من مقاطع الفيديو المنتشرة على النت إلى أن وجدت عدة وصايا في هذا المنتدى المبارك تحذر من استخدامها وطبقت ما فهمته من مشاركات الإخوة الكرام على حقلين في الجدول الرئيسي (TAB) وهما (TYPE! – TYPE2) فأرجو أن أكون قد وفقت للإجراء المناسب ولكن .. هل الوصية بعدم استخدام خاصية Lookup هي في جميع الحالات والجداول بلا استثناء؟ وإن كان كذلك فما هو البديل في هاتين الحالتين: 1- حقل (LVL) في الجدول الرئيسي (TAB) استخدمت قائمة من عمود واحد على اعتبار أن المشكلة في قائمة من عمودين، لأن المطلوب في هذا الحقل اختيار أحد هذه الأرقام (1 – 2 - 3) فقط ولا يقبل الحقل إدخال غيرها .. ولم أعرف كيف أفعل ذلك حتى بمراجعتي للمواضيع المتعلقة بقناع الإدخال .. فإن كان استخدام خاصية Lookup في هذه الحالة غير موصى به أيضاً فما هو البديل ؟ 2- جدول (TAB_Msaneed) هو جدول صممته بناء على كلام أحد الإخوة، وهو جدول مغلق أو ثابت ليس لإدخال البيانات، هو أشبه بالفهرس، حقوله متفرعة عن بعض، لذلك تم استخدام خاصية القوائم فيه، قائمة من احتمالين، لكل احتمال احتمالين .. وهكذا ، وبالنظر في الملف المرفق تتضح الصورة بإذن الله .. فهل كونه جدولا مغلقا وليس مصمما لإدخال البيانات يعني أنه لا بأس من استخدام خاصية Lookup فيه، وإن لم يكن فما هو البديل في هذه الحالة ؟ هذا (أولا) وبعد الانتهاء منه بعون الله ننتقل إلى (ثانيا) ولكن في موضوع آخر كما اتفقنا 🙂 MusndWZwayid.rar
  2. أعتذر إن كنت خرجت عن قواعد المنتدى .. إنما أردت أن أجعل كل استفساراتي التي تصب في مصب (تصميم الجداول) في مشاركة واحدة لأني ظننت أن بعضها يؤدي لبعض .. لكن يظهر أني توسعت في الموضوع لذلك سأحاول أن أطرح استفساراتي بهذا الخصوص بمواضيع متفرقة وسأحاول أن أكون أكثر تحديداً .. والله الموفق
  3. عملاً بهذه الوصية وغيرها أعدت بناء الجداول كما هو في الملف المرفق، وكنت أستخدم هذه الخاصية في حقلي (TAB_TYP1 ، TAB_TYP2) فعملت بوصية الأخ جعفر واتبعت الخطوات التي ذكرها حسب فهمي .. فأرجو أن أكون قد وفقت وجعلت لعمود الترتيب اسما واحدا (Tno) في جميع الجداول التي أريد أن أستخدم فيها كود الإضافة والنقل والآن جاء وقت: رابعا: أضفت إلى الملف أحد الجداول الثانوية وهو جدول الرموز (TAB_RMZ) وعلاقته بالجدول الرئيسي علاقة متعدد بمتعدد، ووجدول الربط اسمه (TAB_RMZ_X) يعني أني أميز جداول الربط بحرف (X) في آخرها والمطلوب في هذا الجدول أمور: 1- في حقل (LVL) أريد حصر البيانات المدخلة في احتمالين (1، 2) لذلك جعلته كقائمة لأني لا أعرف طريقة غيرها، وهناك حقول في جداول أخرى بنفس الفكرة، أريد ان تكون قيمها محصورة ضمن قائمة محددة، فما هي الطريقة المناسبة لذلك إن كانت هذه الطريقة ليست سليمة 2- توجد مشكلة في كتابة الرموز فهي تظهر بشكل معكوس، وعند الكتابة بعدها تنعدل .. فما المشكلة 3- ما هي أفضل طريقة لجعل الرموز تظهر في النموذج لاختيار ما يلزم منها عند الحاجة، مع التذكير بأن الحديث يمكن أن يكون له أكثر من رمز .. وفي الملف المرفق محاولة مني لذلك 4- هذه الرموز موجودة في حقل (NASS) فهل توجد طريقة لتعبئتها تلقائيا، يعني إذا وجد في حديث رموز: {^} {+=} (|)، يتم إضافة هذه الرموز للحديث المطلوب في الجداول .. وهكذا في كل حديث MusndWZwayid.rar
  4. مساعدة في تصميم الجداول في موضوع سابق (تعبئة حقل حسب قيمة حقل آخر) تفضل الأخ جعفر بإسداء بعض النصائح المهمة حول تصميم الجدول، لذلك ولأهمية الموضوع وتشعبه فقد طرحته في موضوع مستقل طالبا النصح من أهل الخبرة في أفضل تصميم للجداول يخدم البرنامج وبداية فإن البرنامج هو للأحاديث .. والمطلوب منه أساساً ثلاث مهام رئيسية: 1- البحث في النصوص بكلمة أو أكثر (كما في برنامج الشاملة) مع إمكانية حصر البحث في مسند معين أو موضوع معين أو رمز معين .. ولكل هذه الأمور جداولها الخاصة 2- استعراض الأحاديث والتنقل بينها وإليها حسب الموضوع وحسب الراوي 3- التخريج، وبعبارة برمجية ربط قاعدة البيانات الرئيسية بكتب الحديث، وهذه كتب توضع في ملف خاص وكل كتاب برقم، والربط يكون يدويا أقوم به يوما بعد يوم حسب التيسير والربط بين كل الجداول هو بالمفتاح الأساسي الذي لا يتكرر (MNO) هذه هي المهمات الرئيسية المطلوبة من البرنامج .. لكن العمود الفقري للبرنامج هو إضافة الأحاديث ونقلها والتعديل على نصوصها حسب ما يستجد من معلومات وطرق كما أفعل الآن في ملفات وورد .. لذلك لا زلت أنتظر الحل الأمثل لموضوع الإضافة والنقل في موضوع إضافة سجل بين السجلات ونقل السجلات ومصدر البيانات هو ملفات وورد .. وقد تفضل الأخ جعفر بحل مشكلة تحويل الجداول من وورد لأكسس كما هي فجزاه الله خيراَ ولا أزال أضيف اللمسات الأخيرة على ملفات الوورد .. وفي خلال هذه الفترة أحاول أن أتعلم ما يلزمني بخصوص أكسس لأني سوف أنتقل للعمل عليه .. والخطوة الأولى هي التصميم الصحيح لقواعد البيانات والجداول والجداول في وورد كلها بتصميم واحد، عمود للنص، وعمودان لأرقام ورموز خاصة لها دلالاتها .. سوف تحول لأكسس كما هي ثم يتم تحويل هذه الأرقام والرموز للبيانات المطلوبة في حقولها الخاصة، ثم يحذف هذان العمودان بعد ذلك وليس كل المعلومات المطلوبة موجودة في ملفات الوورد .. هناك معلومات سوف توضع في أكسس .. وأهمها الترتيب على الموضوعات .. فالمشوار لا زال طويلاً .. لكن مشوار الألف ميل يبدأ بخطوة .. والله الميسر وبعد الاطلاع على نصائح الأخ جعفر والموضوع الذي أشار إليه، فالجدول الرئيسي سميته (TAB) والجداول الأخرى تزيد حرفا أو أكثر (TAB_RM , TAB_MG) والاستعلامات تبدأ بحرف (Q) .. حرف واحد فقط لأني أحب الاختصار 🙂 والنماذج تبدأ بـ (FRM) والرئيسية منها بأرقام (FRM1 , FRM2) والفرعية تميز بالحروف حسب مصدرها (FRMrm, FRMmg) وكل جدول فيه رقم (ID) ترقيم تلقائي، وهو خاص للبرنامج ورقم (MNO) وهو للربط بين كل الجداول كما تقدم ورقم خاص لترتيب السجلات في كل جدول، وهو رقم متغير، يتغير حسب الإضافة والنقل والحذف، ولا تأثير له على الترابط والعلاقات بين الجداول .. وظيفته الترتيب فقط وهنا لدي أول سؤال: كنت أفكر أن أجعل له تسمية خاصة في كل جدول، مثلا في الملف الرئيسي (HNO) وفي ملف آخر (RNO) وهكذا .. لكن خطر في بالي أن يكون لهذا الحقل المسؤول عن الترتيب اسم واحد في كل الجداول التي أنا بحاجة فيها للإضافة والنقل وهو (TNO) وذلك لاستخدامه في كود الإضافة والنقل الذي سيتم اعتماده، فعند الحاجة لهذه العملية في أي جدول يتم استدعاء الكود الموحد لهذا الغرض ليقوم بإجراء العملية بالاعتماد على عمود الترتيب هذا باسمه الموحد .. فما هو الأفضل اسم واحد أم متعدد لكل جدول والسؤال الثاني: نصيحتك أخي الكريم جعفر حول ضرورة وجود حقل (Auto_Date) في الجدول، هل تعني في الجدول الرئيسي أم في بعضها أم في كل الجداول بلا استثناء ؟ والسؤال الثالث: اسم الملف الرئيسي في وورد (مسند وزوائد) فكيف تكتب هذه الكلمة بطريقة (عربي إنجليزي) لأسمي بها البرنامج .. مثلاً (MSNDUZUAD) ؟؟ وحتى لا تختلط علي الأمور .. ونظرا لقلة خبرتي أكتفي بهذا الآن .. منتظرا رأي الإخوة للانتقال لجزئية أخرى ولكن أترك لكم هذه الصورة المبدئية التي توضح العلاقات المفترضة بين الجداول .. طبعا هذه الصور قديمة أيام التجارب الأولى
  5. هي كذلك فعلا .. ولأهمية الأمر فسأطرح قريبا موضوعا خاصا بعنوان (مساعدة في تصميم الجداول) لنبدأ من أول السطر فقد كان تركيزي هنا على تحديث حقل بناء على حقل آخر .. لكن ينبغي أولا أن أتأكد من أن هذه الحقول صممت بالطريقة الصحيحة وينبغي أن أشرح أولا بعض الأمور المهمة .. فمثلا في موضوعنا هذا فإن حقل (nom) هو حقل مؤقت تم استيراده من وورد، وفيه عدة رموز وأرقام، سوف تترجم إلى معلومات في حقلين (TYPE1 - TYPE2) ولها دور في ترقيم المفتاح الأساسي (Mno) وبعد أداء هذه المهمة سوف يحذف ليتم بعد ذلك مراجعة معلومات الحقلين وتعديل ما فيها من خطأ وتعبئتهما يدويا في حالة إضافة الأحاديث الجديدة .. لذلك وضعتهما على شكل قائمة محصورة الاحتمالات للاختيار بينها وعدم الخطأ في إدخال المعلومات بل وكذلك الأمر في حقل (Tlvl) حقل فيه رموز خاصة وضعت في وورد ، سوف تترجم إلى بيانات لها أهميتها في ربط الجدول الرئيسي بالجداول الأخرى .. وهذه أمور لا يكمن القيام بها في وورد .. فترجمة هذه الرموز والأرقام إلى بيانات هي مهمة أكسس .. ثم بعد ذلك معلومات الأحاديث الجديدة التي ستضاف ستحدث يدويا في حقولها الحاصل .. وحسب فهمي لقوانين هذا المنتدى المبارك فإن موضوعنا هنا تم بحمد الله .. وينتقل بحث تصميم الجداول لموضوع آخر .. والله الموفق
  6. بعد التجارب نجحت في تطبيق الاستعلام على الجدول من خلال استعلام تحديث، وبهذا تم تجاوز النقطة الثانية بقيت النقطة الأولى بخصوص تصميم الجدول وهل تصرفي صحيح وهاهو الملف السابق مع استعلام التحديث الذي أنشأته MZtab08.accdb
  7. شكرا لك أخي الكريم biskra .. الدالة الجديدة حلت المشكلة أخي الكريم جعفر .. كلامك مهم جداً .. لكن لقلة خبرتي لم أستوعبه جيدا .. فصبرك علي شوي أولاً: نصيحتك المشكورة: هذا أمر سيربك حساباتي .. لأني استخدمت هذه الطريقة في أكثر من حقل في هذا الجدول وفي غيره، وهذا الملف الذي رفعته هنا هو مجرد مثال، وكنت سأطبق الحل في الحقول والجداول الأخرى بنفسي قياسا على ما سيتفضل به الإخوة في هذه المشاركة ولكن .. إذا كانت طريقتي هذه مرجوحة في نظر أهل الخبرة فلا بد من العدول عنها وفي الملف المرفق محاولة مني لتطبيق نصيحتك بحسب فهمي .. فهل ما فعلته صواب وإذا كان صوابا ننطلق للنقطة الثانية: كيف سيطبق الاستعلام الذي تفضلت به على الجدول MZtab07.accdb
  8. هل هذا يعني أنه لا يمكن دمج هذه الاستعلامات في استعلام واحد ثم .. تبقى مشكلة تحديث "*" "^" حيث أنه في الملف الذي أرفقتَه بعد تشغيل استعلام التحديث (type1) الخاص بـ "*" "^" تبقى هذه الحقول كما هي ولم تتغير إلى (1) كما في الصورة
  9. تم التحديث حسب الأرقام .. ولكن لم يتم التحديث حسب "*" "^" هل المشكلة في وجود علامتي التنصيص "" فلا بد من استبدالها .. أم هناك حل
  10. قياسا على ما تفضل به الأخ الكريم biskra قمت بعمل استعلامات تحديث للجزء الثاني كما في الملف المرفق، ولكن: 1- هل يمكن دمج هذه الاستعلامات في استعلام أو إجراء واحد 2- لم تنجح معي الخطوة الأولى التي فيها "*" "^" 3- وكذلك بالنسبة للخطوة الأولى المطلوب أن يحدث إلى (1) في حالة وجود أي رقم في حقل (nom) MZtab2.accdb
  11. جزاك الله خيراً أخي الكريم biskra وبانتظار الجزء الثاني
  12. في الملف المرفق المطلوب تعبئة حقلين بحسب القيمة الموجودة في حقل (nom) أولا: حقل (TR) وهو: نعم أو لا، المطلوب وضع إشارة (نعم) حيث تكون القيم في (nom) ^ أو #^ أو @^ ثانيا: الحقل (Type1) وهو قائمة من أربع قيم، والمطلوب: - إذا كان (nom) رقما أو ("*") أو ("^") تكون قيمة (Type1) [1 (مسند)] - إذا كان (nom) (@) أو (@^) تكون قيمة (Type1) [2 (موقوف)] - إذا كان (nom) (^) تكون قيمة (Type1) [3 (طريق)] - إذا كان (nom) (#) أو (#^) تكون قيمة (Type1) [4 (زائد)] MZtab.accdb
  13. لا يزال عندي أمل 🙂
  14. شكرا أخي الكريم biskra جربت استخدام الكودين على ملفي ونجحت في ذلك بحمد الله .. وظهر لي أمران الأول إيجابي .. والثاني سلبي * الأمر الإيجابي: يظهر أن موضوع نقل السجل للأمام أو للخلف خطوة واحدة أسهل من نقل عدة سجلات لمكان آخر .. ويمكن أن يتم بمعزل عن كود النقل الذي سيتم تخصيصه للنقل المتعدد .. وبدون استخدام الترقيم العشري وهذا ينفعني كثيراً في الجداول الفرعية الصغيرة حيث المطلوب فقط عملية النقل البسيطة هذه .. فاستخدام أحد هذين الكودين لا يتطلب إلا وجود حقل واحد وهو (حقل الترقيم Hno) .. أما كود النقل السابق فيتطلب وجود ثلاثة حقول: (حقل الترقيم العشري – حقل IDX– حقل مربع التحديد). * الأمر السلبي: لكن استخدامهما في الجدول الرئيسي لا يتناسب مع كون الترقيم في حقل الترقيم عشرياً، وهو أمر تتطلبه عملية الإضافة وعملية النقل المتعدد إذ لاحظت أن الكودين لا يعملان بشكل جيد بوجود الترقيم العشري ولا بد من أن تكون الأرقام صحيحة في حقل الترقيم Hno فهل هناك طريقة للتعديل عليهما أو على أحدهما للعمل بشكل جيد حتى مع الترقيم العشري
  15. أنا الذي أشكرك أخي الكريم على متابعة هذه الملاحظات في هذا الموضوع الذي لم أتوقع أن يتشعب بهذا الشكل أنا جربت الكود على الملف الــ (big boss 🙂) وقمت بجولة تجارب عنييييفة .. والأمور تمام على جميع الاحتمالات وبحمد الله .. فجزاك الله خيرا ثم لاحظت أن الكود بعد تطبيق الخيارات الذي تفضلت بها بخصوص علامات الجدولة أصبح أسرع .. بمعنى أن سطر (Me.tn.SetFocus) كان يزيد لحظة خاطفة من البطء عندما كان المؤشر ينتقل من النص إلى التكست بوكس .. أما الآن فالمؤشر يبقى في التكست بوكس بدون (لحظة البطء الخاطفة 🙂) لكن لابد من الابقاء على هذا السطر لأني لما حذفته عادت مشكلة أن المؤشر لا يقف دائما عند التكست بوكس عند استخدام المنظار كل هذه المعاناة لأن الإنتر يضيف سطرا جديدا في بداية حقل النص .. ويبقى هذا السؤال المحير: لماذا بقي تأثير الإنتر حتى بعد الانتقال وتنفيذ الكود .. أليس من المفترض أن أي كبسة يبقى مفعولها في الحقل أو الزر الذي كبست فيه .. 🤔 المهم أن موضوعنا قد انتهى على خير بحمد الله
  16. شكلو هالمنظار غاوي غلبة .. 😁 لا مشكلة إذا كان الرقم صحيح أو ما في رقم بس إذا كان الرقم خطأ بتطلع رسالتين: الرقم غير موجود .. وبعدين : الرجاء إدخال رقم ... مع إني كبست عليه مرة وحدة بس
  17. جزاك الله خيرا أخي جعفر .. تم تجاوز هذا الأمر لكن ظهرت معي في الملف المرفق مشكلة أخرى 🙂 عند الكبس على المنظار (go) والتكست بوكس فارغ أو الرقم خطأ تخرج هذه الرسالة لكن عند كتابة رقم بشكل صحيح لا مشكلة وانتهت المشكلة عندما حذفت الكود (Call tn_AfterUpdate) .. وطبعا هذا لم يؤثر على عملية الانتقال بالكبس عليه .. فهل تصرفي صحيح
  18. معلش .. ممكن تعديل آخر ☺️ هل بالإمكان يعد كتابة الرقم خطأ وخروج الرسالة أن ينتقل المؤشر مباشرة للتكست بوكس (tn) لكتابة الرقم الصحيح حاولت ذلك بإضافة سطر للكود لكن لم تنجح المحاولة .. وحتى مع تغيير (فهرس علامات الجدولة) المؤشر ينتقل معي لأي مكان إلا التكست بوكس 🤔 If DCount("*", "qry_tbl2", "HNO =" & Me.tn) = 0 Then MsgBox "الرقم غير موجود" Me.tn.SetFocus Me.tn = "" Else . . .
  19. عوداً على بدء .. والله الميسر السرعة هي الأهم عندي مع أكثر حد ممكن من المرونة من حيث الخيارات والتسهيلات التي سأحاول أن أوضحها بالتفصيل بعون الله .. لأن هذا الأمر (إضافة سجل بين السجلات ونقل السجلات) لا أقوم به كثيرا فحسب، بل هو صلب عملي .. فالسرعة مهمة هذا .. وعملاً بوصيتك أخي الكريم جعفر سأحاول أن أفصل بشكل أكثر، وسأجعل كلامي على عدة محاور، فاعذروني على الإطالة .. والتكرار أحيانا أبدؤ كلامي -بعد الاستعانة بالله- بالتنبيه إلى أنني كنت أستخدم أوفيس 2010 ، والآن أصبحت أستخدم 2019، وإلى الآن مع كل التجارب لم يخرج البرنامج معي .. والحمد لله والمحور الأول الذي أريد أن أتكلم عنه هو (Me.nass.Visible = False) فكما ذكرت سابقاً، فإن الكود الذي تفضل به الأخ (husamwahab) أسرع في الملفات الكبيرة، في النموذجين: المفرد والمستمر، وقد تمكنت أن أجعله يعمل في النموذج المفرد بشكل جيد. لكن بعد التدقيق في الكود لاحظت أن النص لا يظهر بشكل كامل في النموذج، بل بعضه، وذلك بسبب: ولما جعلت غيرت الإعدادات ليظهر كل النص، أصبح أبطأ، لكنه لا زال الأفضل أداءً وهنا خطرت لي فكرة .. أن أجعل حقل النص مخفياً في بداية الكود، فوضعت في بداية الكود Me.nass.Visible = False وفي نهايته Me.nass.Visible = True وجربته لإضافة السجلات في نموذج مفرد -حيث يظهر البطء أكثر- فكانت النتيجة جيدة جدا حتى في الملف الكبييير، وجربت هذه الطريقة (جعل حقل النص مخفيا في بداية الكود) مع كود الأخ kanory ، ولاحظت أن الأداء قد تحسن، وإن كان الكود السابق أسرع. وهذا يؤكد أن مشكلة البطء هي في التنقل بين هذه السجلات ذات النصوص الكبيرة، ولا بد أن يقوم الكود بالتنقل بين السجلات عندما يعيد الترتيب لكي يأخذ السجل الجديد موقعه بعد السجل الذي أضيف بعده، فلما أصبح النص مخفيا أصبح التتقل سريعا، وجربت أن أجعل النص غير ممكن لكن النتيجة لم تكن جيدة بالشكل الذي حصل عندما جعلته مخفيا هذه ملاحظتي البسيطة أضعها بين يدي الخبراء للنظر فيها والبناء عليها فقد تكون هي المفتاح أو تكون مفتاحا لحل آخر أفضل، فإذا كان جعل النص مخفيا جعل الأداء أحسن، فهل يمكن أنه إذا كان الكود يعمل في الخلفية بعد فك ارتباط النموذج عن الجدول يكون الأداء أفضل .. مجرد خواطر 🙂 النموذج المفرد والنموذج المستمر الإخوة الكرام .. طلبي يتضمن أمرين: الإضافة والنقل، والإضافة أقوم بها بشكل أكثر من النقل. وأقصد بالنموذج المفرد أي النموذج الرئيسي للبرنامج حيث خدمات البحث والاستعراض والربط مع الجداول الأخرى. وطبعا من أهم الخدمات المطلوبة فيه: (إضافة حديث بعد هذا الحديث) وقد كنت ذكرت في مشاركة سابقة لي أنه لا حاجة لإدارج خدمة نقل السجلات في هذا النموذج، لأنه لا يمكن تحديد أكثر من سجل وأنت في نموذج مفرد .. لكن معلش بعد النظر غيرت رأيي .. 🙃 والمطلوب إن أمكن: إضافة هذه الخدمة بشكل محدود وهو النقل لخطوة واحدة، أي: نقل هذا الحديث الذي أنا في صفحته، نقله خطوة واحدة: (قبل أو بعد) الموضع الذي هو فيه، ففي هذه الحالة لا حاجة لتحديد السجلات .. أما عند الرغبة بنقل الحديث لمكان آخر يتم تحديده، أو عند الرغبة في نقل أكثر من حديث فعندها لابد من النموذج المستمر لتحديد السجلات وهذا لا يعني أن النموذج المستمر لا يحتوي على خدمة إضافة السجلات، بل هي مطلوبة فيه أيضاً، فقد يكون العمل فيه أسهل في بعض الأحيان حسب ظروف العمل وطبيعة وعدد الأحاديث المراد إضافتها الحاصل: خدمة الإضافة مطلوبة في النموذج المفرد والمستمر، وكذا النقل، لكن خدمة النقل في النموذج المفرد مختلفة عنها في المستمر إعادة ترقيم (HNO) إن استخدام الترقيم العشري ليس مطلوبا لذاته، بل فقط لعملية الإضافة والنقل، وبعد أن يتم إضافة حديث في مكانه المطلوب، أو نقل أحاديث لمكانها الجديد المطلوب فلا حاجة لأن يبقى الترقيم العشري فيها، أعني الأرقام بعد الفاصلة العشرية 56.02 / 56.3 فالمطلوب وجود زر لإعادة ترقيم (HNO) فتأخذ كل الأحاديث ترقيما متسلسلا بالأعداد الصحيحة بدون كسور وفي الملف المرفق محاولة مني لهذا الإجراء (سرقتها 🙄) من مشاركة الأخ الكريم (محمد أبو عبدالله) والأمر متروك لأهل الخبرة لاختيار الكود والطريقة الأنسب والأسرع .. ولا بأس إن كان يتطلب إغلاق جميع النماذج، كما يحدث عند ضغط وإصلاح قاعدة البيانات، أو أن يكون على شكل استعلام خارجي .. لأنني لن أستخدم هذا الكود بعد كل عملية إضافة أو نقل، إنما في نهاية اليوم وقبل النوم .. 😴 نقل السجلات في النموذج المستمر كود النقل الذي تفضل به الأخ (husamwahab) عملي، وطريقة تحديد السجلات فيه مريحة، وتسمح بنقل أحاديث غير متتالية .. فجزاك الله خيراً أخي الكريم لكني كمستخدم وبعد التجرية ظهرت لي بعض الأمور أرجو أن تؤخذ بالاعتبار .. هي خطوات وإجراءات يبدو أنها تزيد العملية تعقيداً لكني أرى أنها ضرورية لتقليل احتمالية الخطأ في تحديد السجلات .. وقد حاولت قدر استطاعتي أن أعمل بعض هذه الإجراءات، ليس بقصد أن تكون معتمدة .. بل حتى يتضح مقصدي ومطلبي .. فالكلام وحده لا يكفي .. لذلك فإن النظر في الملف المرفق لعله سيوضح المطلوب بشكل أو ضح وتصوري لهذه الإجراءات يقتضي وجود ثلاثة أزرار لعملية نقل السجلات، وهي في الملف المرفق: الأول (نقل سجلات)، (نقل بعد هذا) (تحديد رقمي) ولا يتفعلان إلا بعد الكبس على الأول * وأيضاً مربع التحديد لا يكون ظاهراً إلا بعد الكبس على زر النقل. * للاحتياط لابد من إلغاء الإشارات في مربع التحديد إن كانت موجودة بالخطأ، وقد نجحت في فعل ذلك من خلال الكود في الزر الأول، ثم عدلت عن ذلك إى حذفها باستعلام يتم تشغيله عند فتح النموذج (حدث عند التحميل) وللخبراء القرار في الإجراء الأفضل * الزر الأول (نقل سجلات) مهمته: - إظهار مربع التحديد - إخراج رسالة طلب تحديد السجلات - تفعيل الزرين الآخرين - إلغاء تفعيل الأزرار الأخرى لأنه لا يسمح بإجراء أي شيء حتى تتم عملية النقل أو تلغى * عند تحديد أي حديث يتم تمييزه بلون مختلف .. وهذه الإجراء وما قبله استطعت القيام به وأنتظر تقييم الخبراء .. * الزر الثاني (نقل بعد هذا) ويستخدم بعد تحديد الأحاديث المطلوب نقلها، ومهمته استدعاء كود النقل لنقل الأحاديث التي تم تحديدها إلى ما بعد هذا الحديث الذي تم الكبس على الزر فيه .. ولكن قبل ذلك لابد من: 1- إلغاء الإشارة من مربع التحديد إن كبستُ عليها بالخطأ، حتى لا تحدث إشكالية طلب نقل الحديث بعد نفسه 2- تمييز هذا الحديث الذي سيكون النقل بعده بلون خاص (سواء الخط أو الخلفيه) .. وهذا الإجراء لم أستطع القيام به 😒 حتى باستخدام التنسيق الشرطي وإنشاء حقل خاص في الجدول لهذا الغرض .. مع أنني أفضل تجنب زيادة الحقول في الجدول الرئيسي 3- إخراج رسالة تأكيد: أنت على وشك نقل ( عدد الأحاديث التي تم تحديدها) حديث إلى ما بعد هذا الحديث (رقم هذا الحديث) .. هل تريد الاستمرار وعند الموافقة يتم استدعاء كود النقل لتنفيذ العملية 4- وعند عدم الموافقة يتم حذف جميع الإشارات من مربع التحديد وإرجاعه للوضع المخفي، ويتم إعادة جميع الأزرار إلى وضعها التي كانت عليه قبل بدء عملية النقل (من حيث التفعيل وعدمه) .. وهذه الإجراءات استطعت القيام ببعضها في الملف المرفق .. * تحديد سجلات متتالية باستخدام (SHIFT) .. في بعض الأحيان أحتاج لنقل عدد كبير من الأحاديث المتتالية، وذلك مثلا عند تغيير ترتيب موضوعات الحديث أو نقل أحاديث مسند كامل لمكان آخر، فقد يكون تحديد هذه الأحاديث بالفأرة طويلاً بعض الشيء، فإن أمكن استخدام مفتاح الشفت لتحديد هذه السجلات فلا حاجة عندها لوجود الزر الثالث: * الزر الثالث (تحديد رقمي) .. بعد الكبس عليه تخرج رسالة للتحديد بالأرقام: انقل من (..) إلى (..) ، فيقوم هو بتحديدها تلقائيا بدل أن أحددها بالفأرة .. * كود النقل .. هو نفسه الكود الذي تفضل به الأخ (husamwahab) ، إنما أضفت عليه: - إخفاء حقل النص لزيادة السرعة - إعادة جميع الأزرار إلى وضعها التي كانت عليه قبل بدء عملية النقل (من حيث التفعيل وعدمه) هذا تصوري لإجراءات عملية النقل .. وهي تصوراتي كمستخدم .. وبانتظار رأي أهل الخبرة وتصوراتهم كمبرمجين. والملف المرفق هنا فيه نموذج وضعت فيه بعض ما توصلت إليه .. والباقي على أهل الخبرة .. لكن لم أضع فيه الجدول الكبيييير، إنما وضعت فيه جدولا صغيراً بنفس الاسم، فمن كان قد حمل الجدول الكبيييير من الرابط في المشاركة السابقة فيمكنه استبداله بالجدول الصغير الموجود في الملف المرفق .. وهذا رابط فيه الملف مع الجدول الكبيييير لمن شاء سجلات وفي آخر هذه المشاركة أعتذر عن الإطالة .. ولكن أهمية الموضوع عندي وكونه ليس سهلا .. وتوفيرا للوقت على الإخوة الكرام كان لابد من التفصيل .. والله الموفق سجلات مختصر.rar
  20. الأخ الكريم جعفر .. تم المطلوب بحمد الله ، فجزاك الله خيراً وأشكرك خاصة على التوضيحات والتنبيهات العامة التي تتفضل بها .. فهي مفيدة لي وأنا في هذه المرحلة: المرحلة الانتقالية من وورد إلى أكسس وكل الشكر للإخوة الذي ساهموا معنا في هذا الموضع .. وأنا بصراحة لم أكن أظن أن هذا الموضوع سيأخذ كل هذه المحاولات .. كنت أظنه أسهل من ذلك وأنه إنما كان صعباً علي لكوني قليل الخبرة
  21. بصراحة أخي الكريم .. وأنا أيضا مش عارف إيش دخل حقل النص في هالموضوع 🙃.. وتفسيري البسيط إنو المؤشر بيروح تلقائيا لحقل النص بعد الانتقال .. ويبدو إنو كبسة الإنتر لسه مؤثرة عليه فبيعمل سطر جديد .. مع إني حاولت إني أكبس على الإنتر بنعومة شديدة حتى لا يستمر تأثيره لما بعد الانتقال 🙂 .. وهذه الصورة أرجو إنها ستوضح ما يحصل ولاحظ أخي الكريم إنو الرقم لسه موجود في التكست بوكس .. فأنا مارست هوايتي في التعديل على الأكواد وأضفت سطرين، سطر لمسح التكست بوكس بعد الانتقال، والسطر اللي عالجت فيه موضوع السطر الجديد، بحيث ما يكون المؤشر بعد الانتقال في حقل النص .. ولكن هل هذا هو الحل الصحيح If DCount("*", "qry_tbl2", "HNO =" & Me.tn) = 0 Then MsgBox "الرقم غير موجود" Me.tn = "" Else Me.Recordset.FindFirst "hno=" & Me.tn Me.tn.SetFocus Me.tn = "" End If
  22. الأخ الكريم جعفر .. شكرا على توضيحاتك وتنبيهاتك لكن لا تزال مشكلة إضافة سطر جديد موجودة، هل هذا يعني أن الحل الذي خطر في بالي وهو جعل المؤشر يقف بعد الانتقال عند التكست بوكس وليس حقل النص هو الحل الأمثل لهذه المشكلة وليس له أي سلبيات ثم وللفائدة .. فقد لاحظت أنه يمكن الانتقال باستخدام الفارة عند الكبس على زر المنظار مع أنك حذفت الكود من هذا الزر .. فعلى أي أساس انتقل
×
×
  • اضف...

Important Information