PDA

View Full Version : کنترل کردن اتصال یا عدم اتصال به شبکه در کد برنامه



akram_raeespour
سه شنبه 24 بهمن 1385, 15:24 عصر
سلام
اول این که هر کس به سوال من جواب بدهد هم برنامه نویسی اش خیلی خوب است و هم برنامه نویس خوبی است. لطفا به من کمک کنید.
من یک برنامه در اکسس نوشته ام که تحت شبکه کار می کند. بعضی وقتها شبکه ممکن است به هر دلیلی قطع شود. می خواهم این را از طریق برنامه هندل کنم. من در قسمتی که Error کدم را هندل می کنم. این طور است:

If Err.Number = 3044 Or Err.Number = 3043 Then
rs = MsgBox("Network Error", vbRetryCancel + vbExclamation, "ÎØÇ")
If rs = vbRetry Then
resume
Else
DoCmd.Quit
End If
End If
می خواهم اگر کاربر من دکم retry را در جعبه پیغام کلیک کند دوباره همان کدی که به خاطر اشکال در شبکه دچار Error شده بود اجرا شود(دوباره سعی شود.) اما هنگام تست کردن وقتی قبل از زدن retry شبکه را وصل می کنم. (یعنی دیگر نباید errorبدهد) باز هم error مربوط به شبکه اتفاق می افتد و کد مربوط به خطا اجار می شود و پیغام دوباره ظاهر می شود.
من این را هم امتحان کردم که به جای کلمه resume دوباره همین تابع را call کنم که دوباره اجرا شود و متوجه بشود که شبکه دیگر قطع نیست اما باز هم متوجه نشد. نمی دانم چه کار کنم. لطف من را راهنمایی کنید. خیلی ممنون :متفکر:

Payam Moradi
سه شنبه 24 بهمن 1385, 19:52 عصر
سلام


اول این که هر کس به سوال من جواب بدهد هم برنامه نویسی اش خیلی خوب است و هم برنامه نویس خوبی است. لطفا به من کمک کنید.
خانم رئیس پور: لزومی به مطرح کردن اینگونه جملات نیست. اگر کسی بدونه و وقت داشته باشه حتما جواب میده.

اصلاح:


On Error Resume Next
Retry:
Err.Number = 0
' Command Line
If Err.Number = 3044 Or Err.Number = 3043 Then
rs = MsgBox("Network Error", vbRetryCancel + vbExclamation, "خطا")
If rs = vbRetry Then
GoTo Retry
Else
DoCmd.Quit
End If
End If

Command Line همون خطی هست که ممکنه توش خطا باشه.
موفق باشید:چشمک:

MM_Mofidi
چهارشنبه 25 بهمن 1385, 11:13 صبح
البته راه حل آقای مرادی درست است ولی برای برنامه نویسی ساختارمند بهتر است از گزینه Resume استفاده شود نه goto و برای پاک کردن خطا از Err.Clear استفاده شود بجای Err.Number = 0
موفق باشید

Payam Moradi
چهارشنبه 25 بهمن 1385, 11:54 صبح
البته راه حل آقای مرادی درست است ولی برای برنامه نویسی ساختارمند بهتر است از گزینه Resume استفاده شود نه goto و برای پاک کردن خطا از Err.Clear استفاده شود بجای Err.Number = 0
موفق باشید
کاملا درسته.



On Error GoTo ErrorHandle

' Command Line

Exit Sub

ErrorHandle:
If Err.Number = 3044 Or Err.Number = 3043 Then
rs = MsgBox("Network Error", vbRetryCancel + vbExclamation, "خطا")
If rs = vbRetry Then
Resume
Else
DoCmd.Quit
End If
End If


فکر کنم بهتر شد!:چشمک:

akram_raeespour
چهارشنبه 25 بهمن 1385, 15:39 عصر
سلام
از پاسخ تان متشکرم
آقای مرادی دومین کدی که فرستاده اید دقیقا شبیه کد خود من است. و اما کد اولی را هم من امتحان کردم و تست اما باز هم همان مشکل را دارم. مشکل من این است که بعد از این که شبکه وصل شد اجرای برنامه داخل تابع متوجه وصل شدن شبکه نمی شود و باز هم وقتی که به دستور ارجاع به دیتا بیس می رسد دچار خطای قطع بودن شبکه می شود و دوباره پیغام می دهد. تابع من این طور است:


Private Sub Form_Timer()
On Error GoTo err_lab

other code''''''''''''''''''''''''

retry:
Set rst = db.OpenRecordset("SELECT * FROM folowing") '''use data base

other code'''''''''''''''
Exit Sub
err_lab:
If Err.Number = 3044 Or Err.Number = 3043 Then
rs = MsgBox("!Network Error", vbRetryCancel + vbExclamation, "ÎØÇ")
If rs = vbRetry Then
GoTo retry
Else
DoCmd.Quit
End If
End If

اگر قبل از دستور استفاده از دیتا بیس Err.clear استفاده شود باز هم مشکل حل نمی شود. کدی که شما نوشته اید را هم امتحان کردم. فکر می کنم چون موقع وارد شدن کنترل اجرای برنامه به تابع شبکه قطع است هنگامی در وسط اجرای تابع (هنگام ظاهر شدن پنجره پیغام) شبکه وصل می شود و بر روی دکمه retry کلیک می شود. با این که شبکه وصل شده چون هنگام ورود به تابع شبکه قطع بوده برنامه متوجه نمی شود. کمی عجیب به نظر می رسد اما این اتفاق می افتد.
مرسی

Payam Moradi
چهارشنبه 25 بهمن 1385, 18:02 عصر
در هر صورت مشکلی نداره.!
شاید عیب کار شما مال جای دیگه باشه.
اگه ممکنه فایل رو ارسال کنید.

akram_raeespour
دوشنبه 07 اسفند 1385, 15:59 عصر
در هر صورت مشکلی نداره.!
شاید عیب کار شما مال جای دیگه باشه.
اگه ممکنه فایل رو ارسال کنید.

قسمتی از کد که لازم بود را که نوشته ام. کل برنامه هم سنگین است و هم تحت شبکه است و نمی شود ارسال کنم. اگر همین مشکل را در یک قطعه کد کوچک شبکه خودتان تست کنید شاید ببینید.
در هر صورت متشکرم

Payam Moradi
سه شنبه 08 اسفند 1385, 00:35 صبح
قسمتی از کد که لازم بود را که نوشته ام. کل برنامه هم سنگین است و هم تحت شبکه است و نمی شود ارسال کنم. اگر همین مشکل را در یک قطعه کد کوچک شبکه خودتان تست کنید شاید ببینید.
در هر صورت متشکرم

باید دید که شما از چه کدی برای تست اتصال شبکه استفاده میکنید. همون یک تیکه رو ارسال کنید. میتونید با پیام خصوصی بفرستید.
بازم میگم مشکل از کد نیست.:چشمک:

amir5670
سه شنبه 15 اسفند 1385, 10:10 صبح
با سلام
می خواستم بپرسم برای شبکه کردن اکسس چه کاری باید بکنیم:اشتباه: