سلام دوستان . اگه مي دونين حتما جواب بدين.
من يه برنامه با ويژوال نوشتم كه ديتا بيسش اكسس هست و با dataenvairoment به برنامه اتصال پيدا كرده.
مي خوام در موقع قطع شبكه بجاي err دادن برنامه كه مسير بانك رو لو ميده يه مسج بياد .
البته برام مهم نيست كه حتما از dataenvairoment استفاده كنم.
اگه مي دونين خواهشن سريع جوابم رو بدين. ممنون ميشم.
سلام
از روالهاي كشف خطا استفاده كن:
Private Sub Form_Load()
On Error Goto ErrHandler ' Label Name
i=1/0
Exit Sub 'Make sure this line write
ErrHandler:
'Simple:
Msgbox "Error occured", vbcritical
'or
'Extended:
Select Case Err.Number 'Err is error object in vb
Case 1' error number 1
Msgbox "system Error"
Do anything
Case 2' error number 2
Msgbox "user Error"
Do anything
Case -2147562154' error number -2147562154
Msgbox "database error"
Do anything
Case Else 'undifined error or known error
Msgbox "Unknown Error"
Do anything
End Select
End Sub
سلام
ممنون بابت پاسختون. ولي من باز هم نتونستم جواب بگيرم.
شايد اين دستور در مورد بعضي ازديتابيس هاي خاص جواب بده.
ممنون ميشم اگه راه ديگه اي دارين بهم بگين.
سلام
ببين اين نوع برنامه نويسي رو كشف خطا مي گن و ربطي به كدهاي داخليش نداره.
شايد بهتر باشه در مورد كدها توضيح داده بشه.
کد:
' با اين دستور مشخص ميشه كه اگر خطاي در اين روال رخ داد كنترل برنامه به برچسب مشخص شده تغيير يابد
On Error Goto ErrHandler ' Label Name
i=1/0
' اگر خطايي رخ نداده بايد از روال خارج شد
Exit Sub 'Make sure this line write
' برچسب مورد نظر در صورت بروز خطا
ErrHandler:
' ميشه فقط يك پيغام داد كه خطا رخ داد
'Simple:
Msgbox "Error occured", vbcritical
'ميشه پيغام داد كه چه نوع خطايي رخ داده
'or
'Extended:
' يك دستور براي انتخاب كدهاي خطايي كه ممكنه ايجاد بشه
' شي خطا داراي يك شماره و توضيح و .. هست كه ميشه اطلاعات كاملي را بدست آورد
' شما اول بدون روال كشف خطا را غير فعال مي كنيم و هر خطايي كه رخ داد كدش رو و دليلش رو در اين بخش اضافه مي كنيم
' براي مثال در صورت پيدا نكردن فايل مثلا خطاي 71 رخ مي ده شما كد 71 رو اضافه مي كنيد و بعد پيغام پيدا نشدن فايل رو مي ديد
Select Case Err.Number 'Err is error object in vb
Case 1' error number 1
Msgbox "system Error"
Do anything
Case 2' error number 2
Msgbox "user Error"
Do anything
Case -2147562154' error number -2147562154
Msgbox "database error"
Do anything
Case Else 'undifined error or known error
Msgbox "Unknown Error"
Do anything
End Select
End Sub
سلام و دوباره تشكر كه اينقدر سريع جواب مي دين
ولي من چند تا مشكل با اين سرس دارم
اول Do anything رو سيستم نميشناسه و رنگش رو قرمز مي كنه.
دوم اينكه روي خط Case -2147562154' error number -2147562154 ارر 6 ميده.
يعني راه ديگه اي نيست؟
ممنون ميشم بازم راهنمايم كنيد.
سلام
ببخشيد من يك شبه كد براي شما نوشته بودم، يعني اينكه شما بايد اين كد رو اونطوري كه مي خوايد تغيير بديد.
اول برنامه رو بدون هيچ مد كشف خطايي اجرا كنيد
دوم شماره خطاي برنامه در صورتي كه فايل رو پيدا نكنه رو يادداشت نماييد
سوم كد زير رو بنويسيد:
کد:
On Error Goto ErrHandler
'اينجا كدي رو كه الان در برنامه هست قرار بديد
Exit Sub
ErrHandler:
IF Err.Number=886 then
Msgbox "File Not Found",vbCritical
Else
Msgbox "Error occured", vbcritical
End If
چهارم به جاب 886 كد خطايي رو كه در مرحله دوم يادداشت كردي بنويس
بيشتر دقت كن دوست عزيز. ما دستوري به نام DoAnything نداريم اين يعني هر كاري كه توي برنامه انجام مي دي رو بنويس يك شبه كد هست.
موفق باشي
سلام
دوباره ممنون
اشتباه بچه گانه من بخاطر اين بود كه كامپيوتر رشته تخصصي من نيست و من برحسب نياز كاري، شش ماهي هست كه برنامه نويسي مي كنم و بدون اينكه كلاسي برم پيشرفت خيلي خوبي داشتم و لي بعضي وقتا در موارد خيلي ساده بدليل نداشتن اطلاعات به مشكل بر مي خورم.
من كد زير رو نوشتم
Private Sub Form_Load()
On Error GoTo ErrHandler
DataEnvironment1.rsCommand1.Open
Exit Sub
ErrHandler:
If Err.Number = -2147220992 Then
MsgBox "File Not Found", vbCritical
Else
MsgBox "Error occured", vbCritical
End If
End Sub
ولي اين دستور اپتدا سعي در باز كردن ديتا اينواير منت مي كنه و ارر مي ده. بعد ارر رو چك مي كنه و پيغام ميده و اگه دستور چك كردن ارر رو هم قبل از دستور باز كردن ديتا اينوايرمنت بزاريم هيچ پيغامي نميده چون هنوز هيچ ارري اتفاق نيفتاده .
در حال حاضر بزرگترين مشكل من تو برنامه نويسي همينه . ممنون ميشم بازم راهنمايي كنيد.
سلام
ممنون
بالاخره حل شد
من به جاي ديتا اينواير منت از ado استفاده كردم و اون رو بادستور به برنامه معرف كردم و بااستفاده از دستوري كه برام فرستاديد مشكل حل شد.
دوباره تشكر.
سلام
اگر امكان داشت كد برنامه اي را كه نوشتي براي من هم بفرست من برا ارتباط با ديتابيس از طريق شبكه مشكل دارم اگر لطف كني ممنون مشم
Hosseiny5524@yahoo.com
سلام آقاي حسيني
سرسي كه ازش جواب گرفته بودم رو به طور كامل براتون مي زارم تا هم شما استفاده كني و هم ساير دوستان كه با شبكه كار مي كنند.
فقط كافيه مسير بانك در شبكه رو تغيير بدي و نيازي به ساخت adodcو... نداري.
Private Sub Form_Load()
Dim cnn1 As ADODB.Connection
Dim strCnn As String
Set cnn1 = New ADODB.Connection
strCnn = "Provider=microsoft jet 4.0 ole db provider ;" & _
"Data Source=\\m_falak\shahrestan\polomp_bank.mdb; "
On Error GoTo ErrHandler
cnn1.Open strCnn
ErrHandler:
If Err.Number = -2147467259# Then
MsgBox "err_bank", vbCritical, "err"
End
End If
End Sub
خسته نباشيد
من گزينه DataEnvironment1 را بايد از كجا بياورم من در نوار ابزارم اين گزينه را ندارم لطفا راهنمايم كنيد