سلام من تازه عضو اين سايت شدم
اميد وارم كه بتونيم به هم كمك كنيم
سوال من
اقا ویژوال بیسیك كد خطا كه تولید میكنه در بعضی موارد یه جوره
برای مثال كد 2147467259(8004005) به این دلایل صادر میشه
1-دیتابیس وجود نداشته باشه
2-فیلد كلید اصلی بخواد تكرار بشه در ديتا بيس
و......
حالا اگه من بخوام با شی err كار كنم باید بر اساس این كد ها كه صادر میشه بتونم به كاربر پیغام بدم
اما چه جوری باید كد دقیقی بابت هر خطا ایجاد بشه
استاد برنامه نویسی گفت كه باید با یه مقدار دیگه جمع بشه
حا لا این مقدار چیه یا اصلن چیكار باید بكنم نیدونم
شماره ارروي كه نوشتي معمولا زماني رخ ميده كه ارروي خارج از ويژوال بيسيك رخ بده و ويژوال بيسيك اون اررور رو نداشته باشه !
براي اينكه بتوني يك اررور هندلينگ داشته باشي بايد براي هر قسمت يك ليبل داشته باشي ، مثلا مي دوني كه سه خط از كد زير براي چك كردن ديتابيس هست و چند خط بعد ... مثلا:
شماره ارروي كه نوشتي معمولا زماني رخ ميده كه ارروي خارج از ويژوال بيسيك رخ بده و ويژوال بيسيك اون اررور رو نداشته باشه !
براي اينكه بتوني يك اررور هندلينگ داشته باشي بايد براي هر قسمت يك ليبل داشته باشي ، مثلا مي دوني كه سه خط از كد زير براي چك كردن ديتابيس هست و چند خط بعد ... مثلا:
کد:
Private Sub Form_Load()
On error goto errDbCheck
database checking code
On error goto errAddRecord
Adding record Code
....
Exit Sub
errDBCheck:
strError = "Program database doesnt exist"
Call ErrHandle(strError)
Exit SUb
errAddRecord:
strError = "There is problem while adding a new record"
Call ErrHandle(strError)
End SUb
البته اين پيشنهاد من بود !
البته اين پيشنهاد من بود !
الان شما امتحان كن ديتا بيست رو مقدار تكراري بده از توي وي بي(فيلد كليد)
يا اينكه كلن اسم ديتا بيست رو اشتباه بده
مي بيني كه ارور هر دو مورد يكسانه
من حالا چه جوري توي ارور هندلينگ به كاربر بگم مشكلت چيه؟
در نتيجه بايد به به مقدار خاص برسم كه در موارد گوناگون خطا يه من كد متفاوت بده حالا اينو نيدونم چيه
كمك
2 راه داره:
یکی همین راهی که دوستمون Siamak-s گفت، یعنی بیای و برنامه ات رو تکه تکه کنی و برای هر قسمت 1 Error Handelig بنویسی!!!
راه دوم هم اینه: شما می گی بعضی Error ها هستن که متفاوت اند ولی 1 کد دارن، خوب این که عیبی نداره تو هم به کاربر پیام می دی که مشکلات کارت یکی از این هاست: یا اصلا دیتابیس وجود نداره یا مقدار ورودی تکراری یا ......
امیدوارم تونسته باشم منظورم رو برسونم
هر دو راه كار معقولانه نيست
2-فكرشو بكن واسه يه خطا مجبور بشي كه همه كاراتو چك كني
اين كه نشد برنامه
بازم تشكر از راهنمايي شما دوستان
يا علي
با سلام
خوب قبل از اينكه به ديتابيس متصل بشي تست كن كه آيا ديتابيسي با اين نام وجود دارد يا نه ؟
کد:
Public Function FileExist(ByVal AppPath As String) As Boolean
On Error Resume Next
If Dir(AppPath) = "" Then
FileExist = False
Else
FileExist = True
End If
End Function
حتما واسه فيلد كليد هم بايد بدونم مقداري كه مي خوام بدم تكراري هست يا نه ؟
اره؟
دوست من اين كار شدنيه
حتمن هم راه حل داره
مرسي بازم اينكه اين جوابو دادين
inf0 جوری حرف می زنه که انگار تا حالا با ویژوال بیسیک کار نکرده، حداقل تا حالا با برنامه های مایکروسافت که کار کردی!!!؟؟؟ تا حالا ندیدی 1 خطا می ده و می گه که این خطا در صورت وجود این 3 مشکل به وجود اومده!!! اگه نمی دونی باید بهت بگم که تعداد کد خطا هایی که مشترک هستن و چند خطا با 1 کد نام گذاری شدن انقدر هست که تو رو مجبور کنه از روشی که مایکروسافت کار کرده و من هم توضیح دادم استفاده کنی!!!!
فکر می کنم دیگه دو هفته گذشته باشه نه
من هنوز هم منتظرم
چون من هم با این مشکل مواجه میشم
یه سوال
------------------
اول بگم من خیلی بلد نیستم یعنی تازه کارم
------------------
سوال:
بعضی وقتها وی بی یه ارور هایی می ده که کلا برنامه بسته می شه
به طور آمیانه critical error میده
چجوری می تونم اینها رو کنترل کنم
و اینکه کاری کنم این مشکل پیش نیاد
سلام
این زخم کهنه من هم هست
راستش به این فکر میکردم که از متن خطاهای ایجاد شده مقداری را جستجو کنم . اگر بتونیم سورس کاملی از این متنها و قسمتی از اون متون که در متون دیگه نیستن رو تهیه کنیم شاید حتی بتونیم یه ocx بسازیم تا همه از بهاری سبز لذت ببرند . البته تا یه جاهایی هم جلو آوردمش . نظر شما چیه دوستان ؟
اگه این کار رو بکنی خدمت بزرگی به جامعه ی برنامه نویسی می کنی
به نظر من
یه تاپیک ایجاد کن
هر کس هر چی خطا بلده و اینکه چرا ایجاد می شه رو اونجا قرار بده
اینجوری کارت کاملتر میشه
من هم کمک می کنم
الان هم دارم تاپیک رو ایجاد می کنم
لینکش رو هم میزارم