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

أيها أصح لإغلاق مجموعة السجلات Recordset (موضوع للنقاش)


AbuuAhmed

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

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

والخيارات هي لإقفال الـ Recordset هكذا:
 

rst.Close
set rst = Nothing
set dbs = Nothing

أو هكذا:
 

rst.Close
set dbs = Nothing

أو هكذا:
 

set rst = Nothing
set dbs = Nothing

وإذا كانت الخيارات كلها سليمة فأيها الخيار الأمثل؟

  • Like 1
رابط هذا التعليق
شارك

41 دقائق مضت, AbuuAhmed said:
rst.Close
set rst = Nothing
set dbs = Nothing

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

تحياتى:wink2:

وفى النهاية هذا رأيى المتواضع قد أكون مخطئ فيه ولكن أنا هاو ولست محترف:biggrin:

  • Thanks 1
رابط هذا التعليق
شارك

تصحيح للمعلومات السابقة

1- عدم تفريغ المتغيرات ليس له تأثير فى تفريغ الذاكرة العشوائية او سرعة التعامل مع قاعدة البيانات
ولكن فى حالة عدم تفريغها ومحاولة استخدامة نفس المتغير مرة أخرى باسناد قييمة جديدة لو اغفل المبرمج اسناد القيمة الجديدة سوف يحصل على القيمة السابقة

2- اما ال RS   والتى تخص الـ  Recordset  عند استدعائها تقوم بفتح الجدول او الاستعلام حسب ما تسنده اليها وفى حالة عدم اغلاقها يظل الجدول او الاستعلام مفتوح وقد يحدث ذلك خطأ عند استدعاء نفس الجدول او الاستعلام مرة أخرى على اعتبار انه بالفعل مفتوح 

 

  • Like 2
رابط هذا التعليق
شارك

أشكركم على المشاركات الكريمة والساهمة في إثراء الموضوع
معلومات التي من حفظي 🙂 ولم أراجعها:
 

rst.Close
set rst = Nothing
set dbs = Nothing

هذا أكثر احترازا وما عليها زود
أما هذه:

set rst = Nothing
set dbs = Nothing

أما هذه ففيها الكفاية وتقوم بنفس الخيار السابق تماما، حيث تمرير "Nothing" لمجموعة السجلات تقوم بالإغلاق والإفراع بمعنى 2 في واحد.
أما هذه:
 

rst.Close
set dbs = Nothing

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

وقياسا على أن "الحاوية" تشمل المحتويات في عملية الإغلاق والتفريغ فكنت أعتقد أن تمرير "Nothing" إلى قاعدة البيانات سوف يقوم بتفريغ مجموعة السجلات أيضا ولكن بعد التجربة الشخصية تبين خطأي ويمكنكم أن تجربوا فأنا قمت بإفراغ القاعدة وظلت المجموعة نشطة.

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

والخلاصة فأنا سأعتمد هذه:
 

set rst = Nothing
set dbs = Nothing

وتحياتي لكم.

  • Like 2
رابط هذا التعليق
شارك

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