06-05-16, 12:15 AM
المسألة ليست حالة استثنائية بقدر ماهي تعامل مع مصادر خارج تحكم الفجوال بيسيك نفسه
كما نعلم ان محرك إدارة البيانات مستقل عن الفجوال بيسيك، فعندما يتم طلب فتح الاتصال فان الفجوال بيسيك يرسل الطلب لمحرك إدارة البيانات سواء Access أو SQL Server، وسيضل محسوب هذا الاتصال في المحرك إلا أن تقوم بارسال طلب غلق أو تنتهي المدة المحددة في المحرك في حال عدم وجود نشاط.
من هنا نعلم أنه عند استخدام Using إنما يتم التعامل مع الكائن المنشأ في الفجوال بيسيك فقط، فإذا لم يتم طلب غلق الاتصال وتم الخروج من Using فإن الكائن المنشأ من SqlConnection قد تم تدميره في الفجوال بيسيك وأصبح البرنامج تحت رحمة مدة انتهاء الاتصال الخامل لغلق الاتصال من محرك إدارة البيانات.
لذلك يجب عدم استخدام Return مع اجراءات Execute الخاصة بطلب تنفيذ عملية ما من محرك البيانات وانما يتم وضعها في متغير مثل Dim res = cmd.ExecuteScalar وبعدها يتم طلب إغلاق الاتصال قبل تدمير الكائن SqlConnection ويمكن بعدها ارجاع القيمة مثل Return res
كما نعلم ان محرك إدارة البيانات مستقل عن الفجوال بيسيك، فعندما يتم طلب فتح الاتصال فان الفجوال بيسيك يرسل الطلب لمحرك إدارة البيانات سواء Access أو SQL Server، وسيضل محسوب هذا الاتصال في المحرك إلا أن تقوم بارسال طلب غلق أو تنتهي المدة المحددة في المحرك في حال عدم وجود نشاط.
من هنا نعلم أنه عند استخدام Using إنما يتم التعامل مع الكائن المنشأ في الفجوال بيسيك فقط، فإذا لم يتم طلب غلق الاتصال وتم الخروج من Using فإن الكائن المنشأ من SqlConnection قد تم تدميره في الفجوال بيسيك وأصبح البرنامج تحت رحمة مدة انتهاء الاتصال الخامل لغلق الاتصال من محرك إدارة البيانات.
لذلك يجب عدم استخدام Return مع اجراءات Execute الخاصة بطلب تنفيذ عملية ما من محرك البيانات وانما يتم وضعها في متغير مثل Dim res = cmd.ExecuteScalar وبعدها يتم طلب إغلاق الاتصال قبل تدمير الكائن SqlConnection ويمكن بعدها ارجاع القيمة مثل Return res
