چگونه می توان جلوی نمایش خطای قطع ارتباط با اسکیوال را گرفت و یا به این صورت بگویم که چگونه می توان وضعیت ارتباط با اسکیوال سرور را قبل از بروز خطا چک کرد ؟
چگونه می توان جلوی نمایش خطای قطع ارتباط با اسکیوال را گرفت و یا به این صورت بگویم که چگونه می توان وضعیت ارتباط با اسکیوال سرور را قبل از بروز خطا چک کرد ؟
از یک Application تو فرم استفاده کنید و رویداد OnException اون را کد نویسی کنید.
و یا در جاهایی که فکر می کنید ممکن است این خطا پیش بیاید از Try . . . Except استفاده کنید.
البته می توانید یک تابع بنویسید و به OnException برنامه متصل کنید تا هر جا خطا رخ داد تابع شما فراخوانی شود.
می توانید در سایت جستجو کنید.
موفق باشید
ممنون از دوستان گرامی . اما نمی دانم که این رویداد کجا اتفاق می افتد . فرض اینکه برنامه در حال اجراست و به خوبی کار می کند . حال ارتباط فیزیکی یا نرم افزاری اسکوال قطع می شود و برنامه شروع به نمایش خطاهای پی در پی در سیستم کاربران می کند .
1- آیا منظور شما قرارداده Try . . . Except در همان کد Connection String هست یا جای دیگر ؟
2- دقیقاً محل ایجاد این رویداد کجاست ؟
1- محل: هر جا که جدولی، چیزی بخواد به دیتابیس متصل بشه، یا با query خواسته باشید کاری با db انجام بدین، خطا رخ می ده.
2- مساله دیگه ای که پیش میاد اینه: فرض کنید اتصال شما قطع می شه. مثلا server متوقف می شه و بعد راه اندازی می شه. با اینکه server در حال اجراست، کامپوننتهای ADO اتصال مجدد رو به طور خودکار برقرار نمی کنن.
1- برای اینکه این خطا (تصویر ضمیمه) که بصورت آبشار تکرار می شور برای کاربران مشاهده نشود چه باید کرد ؟
2- چگونه یک پیغام جایگزین برای آن نمایش داده شود ؟
3- چگونه با ارتباط مجدد Connection بطور اتوماتیک فعال شود ؟
قبلاً از پاسخگویی شما متشکرم ....
در جاهایی که این خطا اتفاق می افته، از یک بلوک try...except استفاده کنید.
try
Do SomeWork
except
show your erro message;
connection.connected:=false;
connection.connected:=true;
end;
با سلام
با توجه به اینکه در جاهای بسیاری احتمال بروز این خطا است و بکارگیری راه حل فوق برای تمامی آنها وجود ندارد , چگونه می توان با هدایت خطای مذکور به ماژول کنترل خطا مشکل را حل نمود؟در جاهایی که این خطا اتفاق می افته، از یک بلوک try...except استفاده کنید.
با تشکر
به کار بردن try...except که مشکلی بوجود نمیاره!
میشه کد قسمت except رو که در واقع مدیریت خطا رو بر عهده می خواد بگیره، به صورت function تعریفش کرد و در تمام فرمهای پروژه ازش استفاده کرد.
در هر حال ابتدا باید خطا رو گرفت.
راه حلی باید یافت که بدون بکارگیری try...except در این مورد, با بروز خطا برنامه بطور خودکار به تابع مورد نظر هدایت شود. من نمیدانم ولی حتما راه حلی وجود دارد.
یک تابع به شکل زیر تعریف کنید.
procedure TForm1.HandelException(Sender: TObject;E: Exception);
begin
//
end;
سپس در زمان اجرای برنامه تابع فوق را به برنامه متصل کنید تا در زمان بروز خطا تابع فوق اجرا شود.
Application.OnException := HandelException;
حالا کلیه خطاها در سطح برنامه به تابع فوق ارسال می شود.
موفق باشید
آخرین ویرایش به وسیله SYNDROME : پنج شنبه 19 اردیبهشت 1387 در 23:12 عصر