ورود

View Full Version : سوال: مدیریت خطا در VBA اکسس



m3343kh
سه شنبه 29 خرداد 1397, 03:01 صبح
با سلام
یک فرم دارم که در رویداد AfterUpdate یکی از کومبوها کد زیر را نوشته ام.
Private Sub NV_AfterUpdate ()
DoCmd.SetWarnings False
DoCmd.RunSQL ("UPDATE MDNVtbl SET MDNVtbl.Check=True WHERE (((MDNVtbl.IDnv)=[Forms]![MDfrm]![NV]));")
*********DoCmd.RunCommand acCmdSaveRecord*********
Me.subfrm.Requery
DoCmd.RunCommand acCmdRecordsGoToLast
End Sub
اما هنگام ورود داده تکراری پیغام زیر را میدهد و بعد از کلیک دکمه دیباگ ، قسمت محصور در * را زرد رنگ را نشان میدهد.(* را جهت نشان دادن محل خطا استفاده کردم و عملا در فرمم استفاده نشده است)

148409
از کدهای زیر در قسمت On Error فرم استفاده کردم اما باز هم همین خطا ظاهر میشود. لطفا راهنمایی بفرمایید.
Dim StrErrFa As String
Dim StrErrEn As String
StrErrFa = Nz(DLookup("[ErrFA]", "Errorstbl", "[ErrCode]=" & DataErr))
StrErrEn = Nz(DLookup("[ErrEN]", "Errorstbl", "[ErrCode]=" & DataErr))
Response = DataErr
MsgBox "ÝÇÑÓí : " & StrErrFa & vbCrLf & vbCrLf & "English : " & StrErrEn, vbApplicationModal, "ÎØÇí ÔãÇÑå : " & DataErr

Mehr@ban
سه شنبه 29 خرداد 1397, 11:37 صبح
سلام

این آموزش رو بخونید شاید چیزی دستتون بیاد

مدیریت خطا در اکسس (http://access-training.blog.ir/post/%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA-%D8%AE%D8%B7%D8%A7-%D8%AF%D8%B1-%D8%A7%DA%A9%D8%B3%D8%B3)

amirzazadeh
سه شنبه 29 خرداد 1397, 16:25 عصر
از اين كد براي مديريت خطاي ورود داده تكراري ميتونيد استفاده كنيد:

Private Sub Form_Error(DataErr As Integer, Response As Integer)
Const conDuplicateKey = 3022
Dim strMsg As String

If DataErr = conDuplicateKey Then
Response = acDataErrContinue
strMsg = "پيام دلخواه شما"
MsgBox strMsg
Undo
End If

End Sub

m3343kh
سه شنبه 29 خرداد 1397, 17:42 عصر
ممنون
ولی این کد جواب نمیدهد.

amirzazadeh
سه شنبه 29 خرداد 1397, 18:32 عصر
ممنون
ولی این کد جواب نمیدهد.

لطفا فايلتون رو بارگذاري كنيد

m3343kh
سه شنبه 29 خرداد 1397, 20:02 عصر
سلام فایل نمونه خدمتتان ارسال میشود.

amirzazadeh
چهارشنبه 30 خرداد 1397, 17:19 عصر
سلام
كد رو به اين شكل اصلاح كنيد:


Private Sub NameA_AfterUpdate()
DoCmd.SetWarnings False
DoCmd.RunSQL ("UPDATE tblA SET tblA.Check=True WHERE (((tblA.IDa)=[Forms]![frmMain]![NameA]));")
DoCmd.RunCommand acCmdSaveRecord
Me.NameA.Requery
Me.subfrm.Requery
DoCmd.RunCommand acCmdRecordsGoToLast
End Sub

m3343kh
چهارشنبه 30 خرداد 1397, 18:13 عصر
سلام
تشکر ویژه:تشویق: