السلام عليكم ورحمة الله وبركاته
تحية طيبة الى اعضاء هذا المنتدى الطيب
في الحقيقة يمكنك تغيير رسائل الخطأ المبنية في الاكسس برسائل خاصة وبكل سهولة ويسر " ترى الاكسس دمه خفيف"
وهذه ابسط مما تتصورون
عند حدث OnError للنموذج يمكنك الغاء جميع الرسائل المبنية في الاكسس وذلك باسناد القيمة صفر الى المتغير Response ويمكنك ادراج رسالتك الخاصة وذلك بعد معرفة رقم الخطأ وتمكنك هذه الدالة من بناء جدول كامل للاخطاء في الاكسس " كل خطأ مع رقمه "
ويمكنك بعد بعد ذلك كتابة رسالتك بناءاً على الخطأ الحاصل
الدالة :
Function AccessAndJetErrorsTable() As Boolean
Dim dbs As Database, tdf As TableDef, fld As Field
Dim RST As Recordset, lngCode As Long
Dim strAccessErr As String
Const conAppObjectError = "Application-defined or object-defined error"
On Error GoTo Error_AccessAndJetErrorsTable
' Create Errors table with ErrorNumber and ErrorDescription fields.
Set dbs = CurrentDb
Set tdf = dbs.CreateTableDef("AccessAndJetErrors")
Set fld = tdf.CreateField("ErrorCode", dbLong)
tdf.Fields.Append fld
Set fld = tdf.CreateField("ErrorString", dbMemo)
tdf.Fields.Append fld
dbs.TableDefs.Append tdf
' Open recordset on Errors table.
Set RST = dbs.OpenRecordset("AccessAndJetErrors")
' Loop through error codes.
For lngCode = 0 To 3500
On Error Resume Next
' Raise each error.
strAccessErr = AccessError(lngCode)
DoCmd.Hourglass True
' Skip error numbers without associated strings.
If strAccessErr <> "" Then
' Skip codes that generate application or object-defined errors.
If strAccessErr <> conAppObjectError Then
' Add each error code and string to Errors table.
RST.AddNew
RST!ErrorCode = lngCode
' Append string to memo field.
RST!ErrorString.AppendChunk strAccessErr
RST.Update
End If
End If
Next lngCode
' Close recordset.
RST.Close
DoCmd.Hourglass False
RefreshDatabaseWindow
MsgBox "Access and Jet errors table created."
AccessAndJetErrorsTable = True
Exit_AccessAndJetErrorsTable:
Exit Function
Error_AccessAndJetErrorsTable:
MsgBox Err & ": " & Err.Description
AccessAndJetErrorsTable = False
Resume Exit_AccessAndJetErrorsTable
End Functionوهذا مثال على تغيير الاخطاء المبنية في من برنامج عملته من قبل سنتين
Private Sub Form_Error(DataErr As Integer, Response As Integer) On Error Resume Next If DataErr = 3022 Then MsgBox "هذا الصنف مكرر في نفس الفاتورة لنفس المستودع فضلاً عدل الصنف في نفس سطره ... أو اضغط Esc للتراجع . " DoCmd.GoToControl "B" GoTo TheEnd End If If DataErr = 3314 Then MsgBox "لم تكتب رقم الصنف" DoCmd.GoToControl "C" GoTo TheEnd End If If MyErr = 1 And DataErr = 2113 Then MsgBox "يجب ان تكون الكمية رقماً" End If If MyErr = 2 And DataErr = 2113 Then MsgBox "يجب ان يكون السعر رقماً" End If If DataErr = 3317 Then MsgBox "يجب ان تكون الكمية اكبر من صفر ." DoCmd.GoToControl "E" End If If MyErr = 3 Then MsgBox "يجب ان لاتزيد عدد احرف الملاحظات عن 255 حرف كحد أقصى" End If TheEnd: Response = acDataErrContinue End Sub
ارجو ان يكون شرحي وافيا .... واذا استصعب عليكم شي فانا في الخدمة
وتقبلوا تحياتي