کنترل خطا در اکسس
کنترل خطا در اکسس : یکی از موارد بسیار مهمی که برنامه نویسان در هنگام برنامه نویسی با نرم افزارها با آن سرو کار دارند ، مدیریت خطاهای حادث شده در اثر برخی اتفاقات است. در این مطلب قصد دارم تا شما را با مدیریت خطا در اکسس آشنا کنم. خوب آموزش را با زدن یک مثال شروع می کنیم. فرض کنید که یک فرم ساده دارید که دو عدد Text Box به نام های Value1 و Value2 و یک عدد دکمه روی آن قرار گرفته است. میی خواهیم با زدن دکمه Value1 را بر Value2 تقسیم و نتیجه را در یک کادر پیام message box به نمایش درآوریم.
Private Sub Command4_Click() MsgBox "Answer:" & (Me.txtvalue1 / Me.txtvalue2) End Sub
در این حالت در صورتی که یک عدد را بر صفر تقسیم کنیم با پیغام خطا مواجه خواهیم شد.
حالا باید دست بکار شویم و مانع از نمایش این پنجره خطا شده یا یک پیام مناسب به کاربران نشان دهیم. یکی از روش هایی که می توانیم انجام دهیم استفاده از دستور IF است. پس می توانیم از این دستور بشکل زیر استفاده کنیم.
Private Sub Command4_Click() If Me.txtvalue1 = 0 Or Me.txtvalue2 = 0 Then Exit Sub MsgBox "Answer:" & (Me.txtvalue1 / Me.txtvalue2) End Sub
با اجرای برنامه مشاهده خواهید کرد که وقتی یکی از Text Box ها را عدد صفر بگذاریم پیغام خطا به نمایش در نمی آید. برای بی اثر کردن خطا و عدم نمایش آن یک روش دیگر نیز وجود دارد که می توان از آن استفاده کرد که آن را در زیر مشاهده می کنید:
Private Sub Command4_Click() On Error Resume Next MsgBox "Answer:" & (Me.txtvalue1 / Me.txtvalue2) End Sub
اما ما نیاز داریم تا کاربر را از این این مسأله آگاه کنیم و به او بگوئیم که تقسیم یک عدد بر صفر امکان پذیر نخواهد بود. بدین منظور کد را بشکل زیر اصلاح میکنیم.
Private Sub Command4_Click() If Me.txtvalue1 = 0 Or Me.txtvalue2 = 0 Then MsgBox "Cannot Divide by Zero" MsgBox "Answer:" & (Me.txtvalue1 / Me.txtvalue2) End Sub
نتیجه بشکل زیر خواهد بود:
اما یکی دیگر از روش هایی که میتوانیم برای کنترل خطا در اکسس از آن استفاده کنیم استفاده از دستور On Error Goto هست که در زیر با نحوه بکار گیری اون آشنا خواهید شد.
Private Sub Command4_Click() On Error GoTo problem MsgBox "Answer:" & (Me.txtvalue1 / Me.txtvalue2) Exit_problem: Exit Sub problem: MsgBox " Cannot divide by zero" End Sub
در این روش ما به نرم افزار می گوئیم هرگاه با یک خطا مواجه شدی به بخش مشخص شده که در اینجا آن را problem نام گذاری کردیم برو ، و در آن بخش کارهایی را که باید در هنگام بروز خطا انجام شود مشخص می کنیم.
مسأله دیگری که باید به آن توجه کنیم آن است که اگر کاربر بجای عدد در Text Box های ما نوشته وارد کرد ، چه پیامی باید به نمایش درآید. در حالت عادی در صورت انجام این کار با همان پیام خطای قبلی که خود ایجاد کردیم یعنی Cannot divide by zero مواجه می شویم ، اما در واقع این پیام ، یک پیام مناسب برای نمایش به کاربر نیست. در ادامه کد های وارد شده را بصورت زیر اصلاح می کنیم.
Private Sub Command4_Click() On Error GoTo problem MsgBox "Answer:" & (Me.txtvalue1 / Me.txtvalue2) Exit_problem: Exit Sub problem: If Err.Number = 11 Then MsgBox " Cannot divide by zero" Else MsgBox " Please enter a valid number" End If End Sub
در واقع در بخش Problem ما به نرم افزار گفتیم اگر خطای شماره 11 رخ داد پیام Cannot divide by zero و در غیر اینصورت Please enter a valid number را به کاربر نمایش بده. به همین روش میتوانیم با پیدا کردن شماره خطاهای حادث شده پیام انگلیسی یا فارسی مناسب را به کاربر نمایش دهیم.