الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة فى Try .. Catch

بدأه محمد أحمد إبراهيم في 20 يونيو 2008 · 5 رد · 663 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله ,,

قمت بكتابة هذا الكود فى حدث form load بحيث تظهر رسالة بالخطأ عند فشل الإتصال بقاعدة البينات والمشكلة هنا أن تلك الرسالة عند فشل الإتصال تظهر بصورة تكرارية بعد لا نهائى ولا تتوقف أبدا ,

try

cn.connection="provider =...........

cn.open

catch ex as exception

msgbox (ex.msg)

end

end try

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

#2

استخدم me.close لإغلاق النافذة - خصوصا إن كانت نافذة بداية البرنامج - كي تنهي البرنامج ولاتستخدم End لعمل ذلك كي يقوم البرنامج بالتنظيف بصورة صحيحة أثناء الإنهاء

على كل حال أرفق مثالا صغيرا موضحا فيه المشكلة حتى نرى أين المشكلة بالضبط

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#3

أخى العزيز أشكرك لإهتمامك كثييييرا , هذا هو الكود

Private Sub MDIParent_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

Try

cn.ConnectionString = "Password=1900818;Persist Security Info=True;User ID=sa;Initial Catalog=Library;Data Source=XP_4_PROG\PCSERVER"

cn.Open()

cmd.Connection = cn

cmd.CommandType = CommandType.Text

Catch ex As Exception

MsgBox(ex.Message)

End Try

End Sub

والمشكلة هى أنه عند تشغيل البرنامج تظهر الرسالة الموضحة بالكود عند فشل الإتصال تظهر بعددلا نهائى من المرات , وقد جربت وضع الكود فى حدث form activiated وحدثت نفس المشكلة , وعندما وضعت الكود تحت زر يعمل عند الضغط عليه إختفت المشكلة وظهرت الرسالة مرة واحدة , فما السبب فى ذلك ؟

#4

تأكد من أنك لاتستدعي إجراء معالجة الحدث MDIParent_Load من مكان آخر يسبب تكرار انطلاق الحدث أو تكرار استدعاء الإجراء

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

 Handles MyBase.Load

في العادة وليس بـ

Handles Me.Load

قم بتعليم اسم الإجراء MDIParent_Load وانقر عليه بالماوس اليميني ثم اختر الأمر Find All references لتجد كافة الاستدعاءات لهذا الاجراء

كما تأكد من كود إظهار الفورم أنه يتم تنفيذه مرة واحدة فقط

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

MsgBox("1")

وإن تكررت العديد من المرات كما أتوقع يمكنك الآن متابعة المشكلة لوحدك

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

تم تعديل هذه المشاركة بواسطة محمد سامر أبو سلو في 21 يونيو 2008 في 12:07

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#5

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

#6

لا شكر على واجب أخي

ويسعدني أنك استطعت حل مشكلتك أخيرا

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

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

مواضيع مشابهة