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

الردود الموصى بها

قام بنشر

(إضافة سجل خلال السجلات وليس في آخر الجدول) بحثت عن هذا الموضوع قدر استطاعتي ولم أجد ما يفيدني

ففكرت في استخدام الترقيم العشري وإعطاء السجل الجديد ترقيما تاليا للسجل المراد أن يضاف بعده، ثم إعادة الترتيب ليأخذ السجل الجديد مكانه المطلوب

وساعدني الأخ المكرم أحمد الفلاحجي في جعل الأكسس يقوم بهذه الخطوات، ووصلنا بفضل الله إلى نتيجة مرضية .. فجزاه الله خيراً

كل هذا في هذا الموضوع

 إضافة سجل جديد برقم تالي للسجل الحالي

وفكرة استخدام الترقيم العشري هي فكرة خطرت في بالي .. أنا أستخدمها حاليا في الملفات الصغيرة التي عندي، لكن كلما كبر حجم الملف كلما كانت عملية الانتقال للسجل الجديد أبطأ، وفي بعض النماذج يبقى المؤشر في الصفحة الأولى ولا ينتقل للصفحة المضافة

 

ويغلب على ظني أن هناك طريقة أخرى أكثر احترافية وأكثر سلاسة وسرعة لإضافة سجل بين السجلات

لأن هذا موجود في برنامج الموسوعة الشاملة المعتمدة على أكسس

يقوم البرنامج بإضافة صفحة للكتاب بعد الصفحة الحالية ..

فبمجرد كبس زر (إضافة صفحة بعد الصفحة الحالية) تجد نفسك في الصفحة الجديدة لتكتب فيها ما تشاء، وقد أخذت مكانها في السجلات بعد الصفحة التي كنت فيها، بكل سلاسة وفي لمح البصر مهما كان الكتاب كبيراً، ودون الحاجة لإغلاق الكتاب

 

فكيف تم هذا الأمر؟؟

وهل يمكن قياساً على ذلك أن يكون بالإمكان نقل سجل أو عدة سجلات متتالية من مكان لآخر في الجدول بمثل هذه السلاسة والتلقائية ؟؟

 

أطرح هذا الأمر في هذا الموقع المبارك وكلي أمل أن يجد اهتماماً من أهل الخبرة فيه، بقدر ما هو مهم بالنسبة لي

فهذا الأمر: (إضافة سجل بين السجلات ونقل السجلات) في غاية الأهمية بالنسبة لي، بل هو طبيعة عملي

كنت ولا أزال أقوم بذلك يوميا في ملفات الوورد التي عندي، وأنا بحاجة لهذا الأمر في أكسس أيضاً

 

طبعاً لكل برنامج قدرات وحدود لا يمكن تجاوزها .. لكن أملي أن أجد من أهل الخبرة في هذا الموقع مساعدة للوصول إلى أقصى حد من المرونة والسلاسة تسمح به برمجيات أكسس في هذا الموضوع

إضافة سجل جديد بين السجلات مباشرة دون إغلاق النموذج

نقل سجل أو عدة سجلات من مكان لآخر في نموذج متعدد

 

وهذا الملف المرفق للتجربة

وللتوضيح فإن الرقم (MNO) هو المفتاح الأساسي للجدول، وهو أساس كل العلاقات بين الجداول ولا دخل له في ترتيب الأحاديث

ترتيب الأحاديث يعتمد على حقل رقمي آخر هو (HNO) وقد جعلته ترقيما عشريا للغرض الذي ذكرته في أول الموضوع

 

 

مسند.rar

قام بنشر

السلام عليكم

لاعادة ترتيب الارقام استخدم نفس الكود بالاضافة الى الكود التالي

        mySQL = "Select * From [مسند] Order By HNO"

        Set rst = CurrentDb.OpenRecordset(mySQL)
        rst.MoveLast: rst.MoveFirst

       CurrentDb.Execute "UPDATE [مسند] SET [مسند].HNO = Null"

            For i = 1 To rst.RecordCount
                rst.Edit
                rst!HNO = i
                rst.Update
                rst.MoveNext
            Next
            Me.Requery

مسند.rar

تحياتي

 

  • Like 1
قام بنشر

وعليكم السلام 🙂

 

23 ساعات مضت, nssj said:

إضافة سجل جديد بين السجلات مباشرة دون إغلاق النموذج

استخدم هذه الجزئية من الكود الذي عندك ، لأن الباقي مافي له داعي ، وهو الذي يبطئ العملية :

Private Sub أمر43_Click()
    Dim LastValue As double
'    Dim x As Long
    
    LastValue = Me.HNO
'    x = Me.ID
'MsgBox x
    DoCmd.GoToRecord , , acNewRec
  
'    DoCmd.RunCommand acCmdSaveRecord
'    DoCmd.RunCommand acCmdRefresh
    Me.HNO = LastValue + 0.1
'      x = Me.ID
'    Me.Requery
'    Me.OrderBy = "HNO"
'MsgBox x
'    DoCmd.FindRecord x, acAnywhere, , acSearchAll
     
    Me.nass.SetFocus
End Sub

.

يعني هاي الاسطر فقط :

    Dim LastValue As Double
    LastValue = Me.HNO
    DoCmd.GoToRecord , , acNewRec
    Me.HNO = LastValue + 0.1
    Me.nass.SetFocus

جعفر

  • Like 2
قام بنشر (معدل)

الأخ الكريم أبو عبدالله شكراً على مرورك .. والكود الذي تفضلت به مفيد في إعادة الترقيم .. لكن ليست هذه هي المشكلة حالياً

 الأخ الكريم جعفر .. شكراً على مرورك .. بالرغم من أننا لا زلنا نضع اللمسات الأخيرة على موضوع: استيراد جدول من وورد

نعم إن اختصار الكود يزيد السرعة .. لكن المطلوب إضافة السجل بين السجلات والانتقال له مباشرة وأنا في النموذج مهما كان الملف كبيراً .. كل هذا بمنتهى السرعة التي يسمح بها شرطي المرور (ACCESS)

ولعلك تتكرم وتعيد الكرة بالنظر في هذا الموضوع بعد انتهائنا من موضوعنا السابق 🙂

 الأخ الكريم  husamwahab شكرا على هذه المحاولة الموفقة .. وهي ليست مجرد محاولة بل تقدم جيد نحو المطلوب

وأعجبتي كثيراً طريقة التحديد عند النقل فهي أفضل من كتابة الأرقام (من .. إلى ..) وتسمح أيضا بنقل عدة سجلات غير متتابعة في وقت واحد

والسرعة التي يتم بها الأمر جيدة في الملفات الكبيرة بعد التجربة

وعندي استفسار بخصوص الحقل الرقمي الذي أضفته (IDX) ما دوره بالظبط، وهل له تأثير على تريب الأحاديث

 

ثم أخي الكريم أرى أنك اعتمدت أيضاً على موضوع (الترقيم العشري) فهل هذا يعني أنه المفتاح الوحيد لهذه العملية (نقل السجلات وإدراج سجل بين السجلات)

فهي كانت مجرد فكرة خطرت لي وأنا لا خبرة لي بالأكسس، وكان للأخ أحمد الفلاحجي الفضل في ترجمتها إلى واقع

ولكن لعل هناك طريقة أخرى ومفتاحاً آخر لهذه العملية يجعلها أسرع وأكثر سلاسة لا سيما في الملفات الكبيرة

نعم .. السرعة التي تمت بها العمليتان (الإضافة والنقل) جيدة، بل سريعة جدا بالمقارنة مع برنامج الوورد، فقد كان موضوع إضافة صف للجدول يأخذ وقتاً في الملف الكبير، مما جعلني أقسم الجدول في الملف نفسه إلى عدة جداول لتقليل وقت الإضافة والنقل

 ولكن أظن أن الجميع يتفق معي أنه لا مانع من التطلع إلى الأفضل ما دام بالإمكان

 (وما دام بالإمكان) هذه يقررها الخبراء في هذا الشأن وليس أمثالي

ولكن رؤيتي للسرعة التي يتم بها إضافة صفحة في برنامج الشاملة على الرغم من أن الكتاب ثلاثة أضعاف الملف الذي أجري عليه التجارب، يجعلني أتساءل: ما هو سر هذه السرعة؟

وجمعني مجلس مع أحد الإخوة وأريته كيف يتم الأمر في الشاملة بسرعة فاستغرب وقال أنه لابد أن يكون هناك جدول آخر تجري فيه هذه العملية، لأنه لا يمكن لأكسس أن يقوم بذلك ودون إغلاق الكتاب إلا إذا كان التعديل يجرى عبر جدول آخر

وتذكرت كلامه هذا عندما رأيت مشاركة لأحد الإخوة قام فيها بإعادة تسلسل الترقيم التلقائي في نفس النموذج دون إغلاقة، لأنه فك ارتباط النموذج عن الجدول في بداية الكود (""= Me.RecordSource)

فخطر في بالي أن هذا قد يكون مفتاحاً آخر للطريقة التي يتم بها الأمر في الشاملة، مباشرة تجد نفسك في الصفحة الجديدة وقد أخذت مكانها المطلوب بين الصفحات، وكأن الإجراءات التي تقتضيها هذه العملية تجري في مكان آخر، وأنت إنما ترى النتيجة فقط

بينما في هذا الكود الذي تفضلت به أخي الكريم والكود الذي تفضل به الأخ أحمد، يمكن -عند تدقيق النظر خاصة في الملفات الكبيرة- ملاحظة العودة لأول الملف بسبب إعادة الترتيب، وبعدها تجد نفسك في الصفحة الجديدة المضافة

 

لا أدري .. لعل بعض أهل الخبرة يرى هذا الكلام من شخص غير مختص عبثياً ولا معنى له .. ولكن أحببت أن أفكر بصوت عالي .. فرب كلمة من هنا .. وفكرة من هنا .. واقتراح من هناك .. واستفسار من هناك .. ينتج عنه المطلوب:

أداء هذه المهمات بأفضل أداء وأعلى سرعة يسمح بها شرطي المرور (ACCESS)

ومعذرة على الإطالة والتكرار للأهمية البالغة لهذا الأمر في عملي، بل عملي كله قائم عليه .. فأحببت أن أفرغ ما في جعبتي منتظراً ما في جعبة أهل الخبرة في هذا المجال للوصول لأفضل الأفكار .. والله الموفق

تم تعديل بواسطه nssj
قام بنشر

طيب ياسيدي لاحظ المرفق .... معليش انا غيرت بعض المسميات للجدول وبعض الحقول لانها محجوزة للاكسس ....

بداية : جرب السرعة في الاضافة للسجل بين السجلات وفتح النموذج على السجل المضاف لأضافة الحديث أو المتن المطلوب

بعدها نفكر في تحريك السجلات صعودا أو نزولا ....

 

kan_mosnad.accdb

  • Thanks 2
قام بنشر

الأخ الكريم  kanory .. شكراً على هذه المحاولة الجديدة بعيدا عن الترقيم العشري

ولعلها أقرب إلى الطريقة المتبعة في برنامج الشاملة .. فعند فتح قاعدة بيانات الكتاب لا نجد فيها ترقيما عشريا -وربما عدم روئيته لا يعني عدم وجوده- لكن الملاحظ أنه بعد إضافة الصفحة فإن حقل الترقيم (ID) -وهو ترقيم عادي وليس تلقائيا- قد أعيد ترتيبه بعد الإضافة بحيث تأخذ الصفحة الجديدة رقمها المناسب لموقعها .. وهذا ما يفعله الكود الذي تفضلت به

ولكنك أخي الكريم في نهاية الكود جعلته ينتقل للصفحة الجديدة بالتصفية، وهذا جعل الانتقال سريعا جداً، لكن المطلوب -أكرمك الله- الانتقال للصفحة الجديدة وهي بين أخواتها بحيث أستطيع أن أرى ما قبلها وما بعدها لضرورة العمل، أما وهي نتيجة تصفية فلا أستطيع ذلك، وعند إزالة التصفية يرجع لأول حديث

 والذي ظهر لي من تجربة الأكواد السابقة أن سبب البطء النسبي لا سيما في الملفات الكبيرة هو في هذه الخطوة الأخيرة: الانتقال للصفحة الجديدة المضافة وهي بين أخواتها

بانتظار تعديلك أخي الكريم لأفضل طريقة تراها مناسبة لهذه الخطوة الأخيرة لإجراء التجارب

قام بنشر

أخي الكريم

عندما حاولت التجربة على الملف المعد لذلك وفيه (84000) سجل ظهرت هذه الرسالة 

01.jpg.90745211e80b1b97c3e20555585b8102.jpg

قام بنشر

تم بحمد الله تجاوز هذه المشكلة بعد البحث

وعند التجربة ظهرت لي رسالة (overflow)

فاجتهدت وغيرت في الكود

Dim kano As Integer

إلى

Dim kano As Long

والظاهر أن اجتهادي لم يكن خطأ .. اختفت الرسالة .. والنتيجة جيدة جداً إلى الآن .. السرعة كبيرة بحمد الله .. ولا تزال التجارب جارية خشية ظهور رسائل أخرى

قام بنشر
25 دقائق مضت, nssj said:

تم بحمد الله تجاوز هذه المشكلة بعد البحث

وعند التجربة ظهرت لي رسالة (overflow)

فاجتهدت وغيرت في الكود


Dim kano As Integer

إلى


Dim kano As Long

والظاهر أن اجتهادي لم يكن خطأ .. اختفت الرسالة .. والنتيجة جيدة جداً إلى الآن .. السرعة كبيرة بحمد الله .. ولا تزال التجارب جارية خشية ظهور رسائل أخرى

ممكن شرح ماذا فعلت قبل تعديل هذا المتغير وكيف اختفت الرسالة السابقا لكي يتم الاستفادة من الخبرة

قام بنشر
17 ساعات مضت, ابو البشر said:

ممكن شرح ماذا فعلت قبل تعديل هذا المتغير وكيف اختفت الرسالة السابقا لكي يتم الاستفادة من الخبرة

How to Fix MaxLocksPerFile Microsoft Access Error

نتيجة التجارب إلى الآن:

قبل التغيير المذكور (Dim kano As Long) وعند التجربة على الملفات الكبيرة كانت النتيجة سريعة وبلا مشاكل

وبعد التغيير والترقي إلى الملفات الأكبر بدأت السرعة تقل، وعند الانتقال للملف (أكبر الجميع - big boss   🙂) [140000- سجل] قلت السرعة أكثر

ولا حظت أيضاً أن الكود الذي تفضل به الأخ (husamwahab) أكثر سرعة في الملفات الكبيرة

لكن .. ليست المشكلة في السرعة .. المشكلة أن الأكسس أصبح يغلق

ولاحظت مع تكرار المحاولة أن المشكلة ليست في هذا الكود أو ذاك، لأن البرنامج لا يغلق فقط عند الإضافة، بل عند الانتقال من حديث لآخر

وبالتحديد في الأحاديث الطويلة جداً، لا مشكلة في الإضافة بعد الأحاديث العادية أو التنقل بينها، لكن في الأحاديث الطويلة جدا -والتي تعمدت إضافتها للتجارب- تحدث المشكلة

وللتأكد من سبب المشكلة .. تتبعت بعض هذه الأحاديث المطولة واختصرت كل واحد منها إلى النصف .. فأصبح الأداء أفضل بكثير وأصبح الخروج من البرنامج قليلاً جدا .. ولما حولت حقل (Nass) من مذكرة إلى نص لم تعد هناك مشكلة .. إذاً سبب المشكلة هي هذه الأحاديث الطويلة وليس عدد الأحاديث

وكالعادة .. عدت للشاملة للتجربة على نفس الملف بأحاديث المطولة دون اختصار، نعم عند الوصول لهذه الأحاديث يصبح التنقل أبطأ قليلاً، ولكن تضاف الصفحة بعدها ويمكنني التنقل بينها ببعض البطء لكن دون أن يغلق البرنامج

فما هو الفرق .. الجهاز نفسه والملف نفسه .. هل لأني أعمل على الأكسس مباشرة أما في الشاملة فالعمل على برنامج تعتمد قواعد بياناته على أكسس .. وفرق بين الأمرين

 اعذروني .. فأنا أفكر بصوت عالي .. وأنتظر رأي الخبراء في هذا المجال

إذا كنت في حاجة مرسلا ... فأرسل حكيما ولا توصه

وإن باب أمر عليك التوى ... فشاور لبيبا ولاتعصه

 فوجود هذه الأحاديث الطويلة جداً في حقل واحد أمر لابد منه، ولا أستطيع أن أقسم الحديث الواحد إلى أكثر من حقل

فما هو المطلوب لأفضل أداء في هذه الحالة

قام بنشر
3 ساعات مضت, nssj said:

How to Fix MaxLocksPerFile Microsoft Access Error

الله يطول في عمرك اخي الكريم ،

يعني كل شخص بتعطيه البرنامج ، بتطلب منه يقوم بتعديل Registry كمبيوتره !!

اما انا ، فلا اسمح لأي برنامج ان يلعب او يغير اعدادات كمبيوتري ، واذا البرنامج يطلب مني هاي ، احذفه ، البدائل كثيرة والحمد لله 🙂

 

جعفر

  • Like 1
قام بنشر

السلام عليكم 🙂

 

في ١٠‏/١‏/٢٠٢١ at 23:06, nssj said:

يسمح بها شرطي المرور (ACCESS)

1. لكل برنامج ميزاته وعيوبه ، فالافضل من الان ان توزن ميزات وعيوب اكسس ، ومنها تواصل العمل في الاكسس او تنتقل الى برنامج آخر لا يوجد به شرطي 😁

2. البرمجة مثل الطبخ ، اللحم مثلا ، كل طباخ يتفنن فيه بطريقة ويعمل طبخة تختلف عن الاخرى وعن الطباخ الآخر ، وقد تعجبك طبخة معينة من يد طباخ معين ، ولا هذا لا يعني ان طبخ الطباخين الآخرين ليس أفضل ، وانما هو قرار اتخذته انت ولأسبابك (مثل طبخ الام ، فلا طبخ يضاهي طبخها 🙂). فالمبرمجين بتجاربهم يعطوك الجواب (على قدر سؤالك) ، ولكل مبرمج طريقته في البرمجة ، وانت تتخذ القرار بإستخدام طريقة او اخرى ، لأسبابك،

3. بسبب انك تتعامل مع حقل مذكرة Memo ، والذي فيه بيانات ثقيلة ، فليست جميع الطرق مناسبة لك ، وقد تكون هناك طرق جميلة في المنظر ، ولكن فليكن عندك هدف ، المنظر او السرعة ، لآنه في الكثير من الاوقات لا تستطيع دمج الاثنين مع بعض. لهذا السبب ، وفي كل سؤال تسأله ، يجب عليك ان تخبرنا بأن السرعة/المظهر هو اهتمامك ، وعليه سيقوم الخبراء بالدلو بتجاربهم 🙂

4. النقاط اعلاه ، يجب اتخاذ القرار فيها من الآن ومن بداية مشروعك ، لأننا هنا في المنتدى رأينا الكثير ، ولما البرنامج تصبح به مشاكل ، يعود ويلقي اللوم على الخبراء.

5. معظم الأسئلة ، يحتاج المبرمج الى وقت وجهد (وفي بعض الاحيان ، البحث) وليعمل البرمجة لها ، فكلما كنت دقيقا في هدفك وغايتك ، واعطيت المعلومات بالتفصيل وبأمثلة ، كلما سهّلت على المبرمج/العضو عمله 🙂

 

 

في ١٠‏/١‏/٢٠٢١ at 23:06, nssj said:

نعم إن اختصار الكود يزيد السرعة .. لكن المطلوب إضافة السجل بين السجلات والانتقال له مباشرة وأنا في النموذج مهما كان الملف كبيراً

في ١٠‏/١‏/٢٠٢١ at 23:06, nssj said:

تجد نفسك في الصفحة الجديدة وقد أخذت مكانها المطلوب بين الصفحات

رجاء تشرح النقطتين بالتفصيل وبأمثلة

 

 

في ١٠‏/١‏/٢٠٢١ at 23:06, nssj said:

أخي الكريم أرى أنك اعتمدت أيضاً على موضوع (الترقيم العشري) فهل هذا يعني أنه المفتاح الوحيد لهذه العملية (نقل السجلات وإدراج سجل بين السجلات)

نعم ، وفكرت في استعمال التاريخ وتحوله الى رقم ، ولكن رأيت ان الترقيم العشري افضل واسهل للإستعمال على المدى البعيد ، وخصوصا ان البرامج تتعامل مع الرقم اسرع من النص والتاريخ 🙂

 

جعفر

 

قام بنشر
في ١٢‏/١‏/٢٠٢١ at 17:36, nssj said:

المشكلة أن الأكسس أصبح يغلق
ولما حولت حقل (Nass) من مذكرة إلى نص لم تعد هناك مشكلة .. 
إذاً سبب المشكلة هي هذه الأحاديث الطويلة وليس عدد الأحاديث

طبيعي يكون هناك فرق بين حقل نص (عدد الحروف لا يتعدى 255 حرف) وبين حقل مذكرة (عدد الحروف لا يتعدى 65535 حرف اذا تم ادخاله يدويا ، بينما يستوعب بيانات بمقدار 1 جيجا اذا تم ادخالها برمجيا) ،

ولكن هذا لا علاقة له بإغلاق الاكسس ، فالمشكلة في مكان آخر ،

 

في ١٢‏/١‏/٢٠٢١ at 17:36, nssj said:

فما هو الفرق .. الجهاز نفسه والملف نفسه

الفرق هو في ملف البرنامج والبرمجة

 

جعفر

 

 

قام بنشر

ورجاء ، اعطنا ملفك كاملا وهذه الاحاديث الطويلة (على ملف وورد مثلا) التي تسبب لك مشكلة ، واخبرنا الخطوات التي تتبعها وتعمل لك المشكلة ، حتى نستطيع معرفة المشكلة

قام بنشر

الأخ المكرم جعفر وبقية الإخوة الكرام .. أشكر لكم متابعة الموضوع معي .. وأرجو أن تستمروا فيه معي لنهاية الطريق للوصول لأفضل النتائج .. أو لأفضل الطبخات  🙂.. مع أقصى سرعة ومرونة يسمح بها شرطي المرور (ACCESS) لأنه لابد لي من نقل عملي من الوورد لأكسس للاستفادة من مزاياه

أنا أكتب هذه الكلمات على عجل للانشغال اليوم ببعض الأمور .. وسأعود لاحقا بتفاصيل أكثر بعون الله

وإنما أحببت أن أخبركم ببعض المستجدات الجيدة بحمد الله.. قمت بالأمس بزيادة الرام للجهاز من (4) إلى (12) ونزلت أكسس (2019) والنتيجة بحمد الله أفضل

مع أن التجارب لا تزال في بداياتها .. لكن إلى الآن لم يغلق البرنامج والحمد لله

والظاهر أن الكود الذي تفضل به الأخ (husamwahab) والذي يعمل على الترقيم العشري أسرع في الملفات الكبيرة، مع أني لم أستطع أن أجعله يعمل بشكل جيد في النموذج المفرد، لأن خاصية الإضافة وحدها مطلوبة في النموذج المفرد أيضاً، أما النقل ففي النموذج المستمر فقط لغايات التحديد

ولعله يمكن البناء على هذه الطريقة، مع التعديلات التي يراها أهل الخبرة، والإضافات التي سأحاول توضيحها بالتفصيل لاحقا بعون الله

المهم في البداية رأي الخبراء في الخطوط العريضة لهذه العملية بالنظر لحجم الملف الكبير من حيث: عدد السجلات وطول الأحاديث في بعض الحقول

وأرجو أن يؤخذ بالاعتبار العلاقات والارتباطات المتعددة والمتشابكة التي ستنشأ مستقبلا بين الملف الرئيسي وبين جداول أخرى .. وظني -ولست من أهل الخبرة- أنه لا تأثير لهذه العلاقات والارتباطات على موضوعنا لأن هذه التغييرات على الجدول الرئيسي، المهم أن المفتاح الرئيسي (MNO) لن يتغير حتى لو انتقل الحديث من أول الجدول لآخره، وكل حديث جديد سيضاف سيأخذ تلقائيا رقم (MNO) خاصاً به

 ومرفق رابط الملف الــ  (big boss   🙂) الذي أجري عليه التجارب، وقد ميزت الأحاديث الطويلة جداً بــ (ططط) في بدايتها حيث أنها كانت سبب المشكلة

والمشكلة كانت عند الوصول إلى هذه الأحاديث المطولة والتنقل قبلها وبعدها .. كان البرنامج يخرج .. وأحيانا تكون الأمور على ما يرام فإذا أضفت بعض التنسيقات على النموذج من حيث الألوان والخطوط تحدث المشكلة .. هذا قبل تحديث الرام ونسخة أكسس .. ولا تزال التجارب جارية

big boss

  • 3 weeks later...
قام بنشر (معدل)

عوداً على بدء .. والله الميسر

في ١٥‏/١‏/٢٠٢١ at 10:22, jjafferr said:

يجب عليك ان تخبرنا بأن السرعة/المظهر هو اهتمامك ، وعليه سيقوم الخبراء بالدلو بتجاربهم

السرعة هي الأهم عندي مع أكثر حد ممكن من المرونة من حيث الخيارات والتسهيلات التي سأحاول أن أوضحها بالتفصيل بعون الله .. لأن هذا الأمر (إضافة سجل بين السجلات ونقل السجلات) لا أقوم به كثيرا فحسب، بل هو صلب عملي .. فالسرعة مهمة

هذا .. وعملاً بوصيتك أخي الكريم جعفر سأحاول أن أفصل بشكل أكثر، وسأجعل كلامي على عدة محاور، فاعذروني على الإطالة .. والتكرار أحيانا

أبدؤ كلامي -بعد الاستعانة بالله- بالتنبيه إلى أنني كنت أستخدم أوفيس 2010 ، والآن أصبحت أستخدم 2019، وإلى الآن مع كل التجارب لم يخرج البرنامج معي .. والحمد لله

والمحور الأول الذي أريد أن أتكلم عنه هو (Me.nass.Visible = False)

فكما ذكرت سابقاً، فإن الكود الذي تفضل به الأخ (husamwahab) أسرع في الملفات الكبيرة، في النموذجين: المفرد والمستمر، وقد تمكنت أن أجعله يعمل في النموذج المفرد بشكل جيد.

لكن بعد التدقيق في الكود لاحظت أن النص لا يظهر بشكل كامل في النموذج، بل بعضه، وذلك بسبب:

 2021-02-01_23h10_57.png.2b5d21749009a638dad7f0d768b2508a.png

ولما جعلت غيرت الإعدادات ليظهر كل النص، أصبح أبطأ، لكنه لا زال الأفضل أداءً

وهنا خطرت لي فكرة .. أن أجعل حقل النص مخفياً في بداية الكود، فوضعت في بداية الكود

Me.nass.Visible = False

وفي نهايته

Me.nass.Visible = True

وجربته لإضافة السجلات في نموذج مفرد -حيث يظهر البطء أكثر- فكانت النتيجة جيدة جدا حتى في الملف الكبييير،

وجربت هذه الطريقة (جعل حقل النص مخفيا في بداية الكود) مع كود الأخ kanory ، ولاحظت أن الأداء قد تحسن، وإن كان الكود السابق أسرع.

وهذا يؤكد أن مشكلة البطء هي في التنقل بين هذه السجلات ذات النصوص الكبيرة، ولا بد أن يقوم الكود بالتنقل بين السجلات عندما يعيد الترتيب لكي يأخذ السجل الجديد موقعه بعد السجل الذي أضيف بعده، فلما أصبح النص مخفيا أصبح التتقل سريعا، وجربت أن أجعل النص غير ممكن لكن النتيجة لم تكن جيدة بالشكل الذي حصل عندما جعلته مخفيا

هذه ملاحظتي البسيطة أضعها بين يدي الخبراء للنظر فيها والبناء عليها

فقد تكون هي المفتاح أو تكون مفتاحا لحل آخر أفضل، فإذا كان جعل النص مخفيا جعل الأداء أحسن، فهل يمكن أنه إذا كان الكود يعمل في الخلفية بعد فك ارتباط النموذج عن الجدول يكون الأداء أفضل .. مجرد خواطر 🙂

 

النموذج المفرد والنموذج المستمر

الإخوة الكرام .. طلبي يتضمن أمرين: الإضافة والنقل، والإضافة أقوم بها بشكل أكثر من النقل.

وأقصد بالنموذج المفرد أي النموذج الرئيسي للبرنامج حيث خدمات البحث والاستعراض والربط مع الجداول الأخرى.

وطبعا من أهم الخدمات المطلوبة فيه: (إضافة حديث بعد هذا الحديث)

وقد كنت ذكرت في مشاركة سابقة لي أنه لا حاجة لإدارج خدمة نقل السجلات في هذا النموذج، لأنه لا يمكن تحديد أكثر من سجل وأنت في نموذج مفرد .. لكن معلش بعد النظر غيرت رأيي .. 🙃

والمطلوب إن أمكن: إضافة هذه الخدمة بشكل محدود وهو النقل لخطوة واحدة، أي: نقل هذا الحديث الذي أنا في صفحته، نقله خطوة واحدة: (قبل أو بعد) الموضع الذي هو فيه، ففي هذه الحالة لا حاجة لتحديد السجلات ..

أما عند الرغبة بنقل الحديث لمكان آخر يتم تحديده، أو عند الرغبة في نقل أكثر من حديث فعندها لابد من النموذج المستمر لتحديد السجلات

وهذا لا يعني أن النموذج المستمر لا يحتوي على خدمة إضافة السجلات، بل هي مطلوبة فيه أيضاً، فقد يكون العمل فيه أسهل في بعض الأحيان حسب ظروف العمل وطبيعة وعدد الأحاديث المراد إضافتها

 الحاصل: خدمة الإضافة مطلوبة في النموذج المفرد والمستمر، وكذا النقل، لكن خدمة النقل في النموذج المفرد مختلفة عنها في المستمر

إعادة ترقيم (HNO)

إن استخدام الترقيم العشري ليس مطلوبا لذاته، بل فقط لعملية الإضافة والنقل، وبعد أن يتم إضافة حديث في مكانه المطلوب، أو نقل أحاديث لمكانها الجديد المطلوب فلا حاجة لأن يبقى الترقيم العشري فيها، أعني الأرقام بعد الفاصلة العشرية  56.02 / 56.3

فالمطلوب وجود زر لإعادة ترقيم (HNO) فتأخذ كل الأحاديث ترقيما متسلسلا بالأعداد الصحيحة بدون كسور

وفي الملف المرفق محاولة مني لهذا الإجراء (سرقتها  🙄) من مشاركة الأخ الكريم (محمد أبو عبدالله)

والأمر متروك لأهل الخبرة لاختيار الكود والطريقة الأنسب والأسرع .. ولا بأس إن كان يتطلب إغلاق جميع النماذج، كما يحدث عند ضغط وإصلاح قاعدة البيانات، أو أن يكون على شكل استعلام خارجي .. لأنني لن أستخدم هذا الكود بعد كل عملية إضافة أو نقل، إنما في نهاية اليوم وقبل النوم .. 😴

نقل السجلات في النموذج المستمر

كود النقل الذي تفضل به الأخ (husamwahab) عملي، وطريقة تحديد السجلات فيه مريحة، وتسمح بنقل أحاديث غير متتالية .. فجزاك الله خيراً أخي الكريم

لكني كمستخدم وبعد التجرية ظهرت لي بعض الأمور أرجو أن تؤخذ بالاعتبار .. هي خطوات وإجراءات يبدو أنها تزيد العملية تعقيداً لكني أرى أنها ضرورية لتقليل احتمالية الخطأ في تحديد السجلات ..

وقد حاولت قدر استطاعتي أن أعمل بعض هذه الإجراءات، ليس بقصد أن تكون معتمدة .. بل حتى يتضح مقصدي ومطلبي .. فالكلام وحده لا يكفي .. لذلك فإن النظر في الملف المرفق لعله سيوضح المطلوب بشكل أو ضح

وتصوري لهذه الإجراءات يقتضي وجود ثلاثة أزرار لعملية نقل السجلات، وهي في الملف المرفق: الأول (نقل سجلات)، (نقل بعد هذا) (تحديد رقمي) ولا يتفعلان إلا بعد الكبس على الأول

* وأيضاً مربع التحديد لا يكون ظاهراً إلا بعد الكبس على زر النقل.

* للاحتياط لابد من إلغاء الإشارات في مربع التحديد إن كانت موجودة بالخطأ، وقد نجحت في فعل ذلك من خلال الكود في الزر الأول، ثم عدلت عن ذلك إى حذفها باستعلام يتم تشغيله عند فتح النموذج (حدث عند التحميل) وللخبراء القرار في الإجراء الأفضل

* الزر الأول (نقل سجلات) مهمته:

- إظهار مربع التحديد

- إخراج رسالة طلب تحديد السجلات

- تفعيل الزرين الآخرين

- إلغاء تفعيل الأزرار الأخرى لأنه لا يسمح بإجراء أي شيء حتى تتم عملية النقل أو تلغى

* عند تحديد أي حديث يتم تمييزه بلون مختلف ..

وهذه الإجراء وما قبله استطعت القيام به وأنتظر تقييم الخبراء ..

 * الزر الثاني (نقل بعد هذا) ويستخدم بعد تحديد الأحاديث المطلوب نقلها، ومهمته استدعاء كود النقل لنقل الأحاديث التي تم تحديدها إلى ما بعد هذا الحديث الذي تم الكبس على الزر فيه .. ولكن قبل ذلك لابد من:

1- إلغاء الإشارة من مربع التحديد إن كبستُ عليها بالخطأ، حتى لا تحدث إشكالية طلب نقل الحديث بعد نفسه

2- تمييز هذا الحديث الذي سيكون النقل بعده بلون خاص (سواء الخط أو الخلفيه) .. وهذا الإجراء لم أستطع القيام به 😒 حتى باستخدام التنسيق الشرطي وإنشاء حقل خاص في الجدول لهذا الغرض .. مع أنني أفضل تجنب زيادة الحقول في الجدول الرئيسي

3- إخراج رسالة تأكيد: أنت على وشك نقل ( عدد الأحاديث التي تم تحديدها) حديث إلى ما بعد هذا الحديث (رقم هذا الحديث) .. هل تريد الاستمرار

وعند الموافقة يتم استدعاء كود النقل لتنفيذ العملية

4- وعند عدم الموافقة يتم حذف جميع الإشارات من مربع التحديد وإرجاعه للوضع المخفي، ويتم إعادة جميع الأزرار إلى وضعها التي كانت عليه قبل بدء عملية النقل (من حيث التفعيل وعدمه)

.. وهذه الإجراءات استطعت القيام ببعضها في الملف المرفق ..

* تحديد سجلات متتالية باستخدام (SHIFT)   .. في بعض الأحيان أحتاج لنقل عدد كبير من الأحاديث المتتالية، وذلك مثلا عند تغيير ترتيب موضوعات الحديث أو نقل أحاديث مسند كامل لمكان آخر، فقد يكون تحديد هذه الأحاديث بالفأرة طويلاً بعض الشيء، فإن أمكن استخدام مفتاح الشفت لتحديد هذه السجلات فلا حاجة عندها لوجود الزر الثالث:

* الزر الثالث (تحديد رقمي) .. بعد الكبس عليه تخرج رسالة للتحديد بالأرقام: انقل من (..) إلى (..) ، فيقوم هو بتحديدها تلقائيا بدل أن أحددها بالفأرة ..

* كود النقل .. هو نفسه الكود الذي تفضل به الأخ (husamwahab) ، إنما أضفت عليه:

- إخفاء حقل النص لزيادة السرعة

- إعادة جميع الأزرار إلى وضعها التي كانت عليه قبل بدء عملية النقل (من حيث التفعيل وعدمه)

 هذا تصوري لإجراءات عملية النقل .. وهي تصوراتي كمستخدم .. وبانتظار رأي أهل الخبرة وتصوراتهم كمبرمجين.

 والملف المرفق هنا فيه نموذج وضعت فيه بعض ما توصلت إليه .. والباقي على أهل الخبرة .. لكن لم أضع فيه الجدول الكبيييير، إنما وضعت فيه جدولا صغيراً بنفس الاسم، فمن كان قد حمل الجدول الكبيييير من الرابط في المشاركة السابقة فيمكنه استبداله بالجدول الصغير الموجود في الملف المرفق .. وهذا رابط فيه الملف مع الجدول الكبيييير لمن شاء

سجلات

وفي آخر هذه المشاركة أعتذر عن الإطالة .. ولكن أهمية الموضوع عندي وكونه ليس سهلا .. وتوفيرا للوقت على الإخوة الكرام كان لابد من التفصيل .. والله الموفق

سجلات مختصر.rar

تم تعديل بواسطه nssj
قام بنشر

شكرا أخي الكريم biskra

جربت استخدام الكودين على ملفي ونجحت في ذلك بحمد الله .. وظهر لي أمران الأول إيجابي .. والثاني سلبي

* الأمر الإيجابي: يظهر أن موضوع نقل السجل للأمام أو للخلف خطوة واحدة أسهل من نقل عدة سجلات لمكان آخر .. ويمكن أن يتم بمعزل عن كود النقل الذي سيتم تخصيصه للنقل المتعدد .. وبدون استخدام الترقيم العشري

وهذا ينفعني كثيراً في الجداول الفرعية الصغيرة حيث المطلوب فقط عملية النقل البسيطة هذه .. فاستخدام أحد هذين الكودين لا يتطلب إلا وجود حقل واحد وهو (حقل الترقيم Hno) ..

أما كود النقل السابق فيتطلب وجود ثلاثة حقول: (حقل الترقيم العشري – حقل IDX– حقل مربع التحديد).

* الأمر السلبي: لكن استخدامهما في الجدول الرئيسي لا يتناسب مع كون الترقيم في حقل الترقيم عشرياً، وهو أمر تتطلبه عملية الإضافة وعملية النقل المتعدد

إذ لاحظت أن الكودين لا يعملان بشكل جيد بوجود الترقيم العشري ولا بد من أن تكون الأرقام صحيحة في حقل الترقيم Hno

فهل هناك طريقة للتعديل عليهما أو على أحدهما للعمل بشكل جيد حتى مع الترقيم العشري

قام بنشر
في ٤‏/٢‏/٢٠٢١ at 20:44, nssj said:

هذا تصوري لإجراءات عملية النقل .. وهي تصوراتي كمستخدم .. وبانتظار رأي أهل الخبرة وتصوراتهم كمبرمجين.

 والملف المرفق هنا فيه نموذج وضعت فيه بعض ما توصلت إليه .. والباقي على أهل الخبرة ..

 

  • 2 weeks later...
  • 3 weeks later...
قام بنشر
في ١٥‏/١‏/٢٠٢١ at 11:19, nssj said:

.. أشكر لكم متابعة الموضوع معي .. وأرجو أن تستمروا فيه معي لنهاية الطريق للوصول لأفضل النتائج .. أو لأفضل الطبخات  🙂..

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information