وعليكم السلام
بما انك عملت تغيير في الكود الاصل ، واللي كان تابع لحدث "قبل التحديث" الحقول ، فيجب ان نُرجع الكود ، بحيث انه يخاطب كود "قبل تحديث النموذج" ،
وبدل ان اضيف الكود لكل حقل ، اعمل التالي:
اختار الحقول التي يجب على البرنامج يتأكد منها (كما في الصورة ادناه) ،
ثم في الحدث "قبل التحديث" لهذه الحقول ، ننادي الوحدة النمطية chk_BeforeUpdate (رجاء كتابة اسم الوحدة النمطية كما تراها في الصورة ادناه) ، هكذا :
.
وعليه ، فيجب علينا إضافة الوحدة النمطية الجديدة ، وعمل تعديل بسيط على الكود الاصل ، ليصبحا هكذا :
Function chk_BeforeUpdate()
Call Form_BeforeUpdate(0)
End Function
Private Sub Form_BeforeUpdate(Cancel As Integer)
On Error GoTo err_chk_BeforeUpdate
Dim ctl As Control
Dim rst As DAO.Recordset
Dim dbs As DAO.Database
Dim fName As String: Dim myCriteria As String
Dim A0 As String: Dim A1 As String: Dim A2 As String
If Left(Me.ActiveControl.Name, Len("TextBox")) <> "Textbox" Then
Set ctl = Me.ActiveControl
Else
Set ctl = ctlDrop
End If
fName = "[" & Mid(ctl.Name, 1, Len(ctl.Name) - 1) & "-مادة" & Right(ctl.Name, 1) & "]" '[الاثنين-مادة1]
myCriteria = "[" & ctl.Name & "]=" & Chr(39) & ctl.Value & Chr(39)
'A0 = DLookup(ctl.Name, "Teacher Class", myCriteria)
'A1 = DLookup(fName, "Teacher Class", myCriteria)
'A2 = DLookup("[NAMEe]", "Teacher Class", myCriteria)
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("Select * From [Teacher Class] Where " & myCriteria)
A0 = rst(ctl.Name)
A1 = rst(fName)
A2 = rst!NAMEe
' If A0 > 0 Then
Beep
If MsgBox("...هذا الفصل " & ctl.Name & "..لديه مادة.." & vbCrLf & _
" باسم : " & A1 & vbCrLf & _
" للمدرس : " & A2, _
vbYesNo + vbCritical + vbMsgBoxRight, "تنبيه") = vbNo Then
Me.Undo
Cancel = True
End If
' End If
Exit_chk_BeforeUpdate:
rst.Close: Set rst = Nothing: dbs.Close
Exit Sub
err_chk_BeforeUpdate:
If err.Number = 3021 Then
Resume Next
Else
MsgBox err.Number & vbCrLf & err.Description
End If
End Sub
.
اما بالنسبة الى رسائل الخطأ التي تكلمت عنها ، فلا علم لي بها , ولم تظهر لي.
جعفر
جدول الحصص.zip