تم التعديل على جدول الموضوعات بتبديل اسم حقلين No1 ، No2 وتم إضافة حقل Error لمعرفة السجلات التي فشلت في الإضافة.
التعديل على الأسماء لتساعدني في التركيز ، وأنصح دائما باستخدام اسماء تدل على معناها.
كذلك قمت بتقليص طول الحقلين أعلاه إلى 50 رمز وأنصح بتقليصه من طرفكم بعد التأكد من أقصى طول مطلوب.
جدول TAB_Subject_X يجب تبديل حقل ID من AutoNumber إلى Number
العلاقات بين الجداول تحتاج إلى إعادة دراسة استعن بغيري 🙂 .
تم تصحيح الكود ليصبح كالتالي:
Set rst = dbs.OpenRecordset("TAB_Subject", dbOpenDynaset)
rst.Sort = "LVLno,Parent,Code" 'جديد
Set rst = rst.OpenRecordset 'جديد
Set nodX = TreeView6.Nodes.Add(, , "A", "الموضوعات")
With rst
Do While Not .EOF
Err.Clear
Set nodX = TreeView6.Nodes.Add("A" & CStr(Nz(!Parent, "")), _
tvwChild, "A" & CStr(!Code), _
CStr(!Code) & ":" & !Sname)
'مؤقتا حتى يتم التأكد من سلامة كل البيانات ------------
.Edit
!Error = Err.Number <> 0
.Update
'-----------------------------------------------------
'If Err.Number = 0 Then nodX.EnsureVisible 'هذا السطر يسبب بطء شديد
.MoveNext
Loop
'مؤقتا حتى يتم التأكد من سلامة كل البيانات ------------
MsgBox "إجمالي السجلات: " & .RecordCount & vbCrLf & _
"السجلات المضافة: " & TreeView6.Nodes.Count & vbCrLf & _
"السجلات الفاشلة: " & .RecordCount - TreeView6.Nodes.Count _
& vbCrLf & vbCrLf & _
"راجع جدول الموضوعات حقل Error"
'-----------------------------------------------------
End With
rst.Close
MZ_SUB 04b.rar