منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : إيجاد الفرق بين مصفوفة وعمود مع إضافة المفقود
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله وبركاته
لدي جدول للموظفين ... وجدول آخر للصلاحيات
في جدول الصلاحيات لدي الحقول التالية ( رقم المستخدم، إسم الفورم ، تسمية الفورم ، فتح ، إضافة )
هذا صف مثلاً : ( 1 ،frmemp، المستخدمين، Yes ،Yes )
عملت مصفوفتين لأسماء الفورمات وتسمياتها على الترتيب
كود :
Public frmsNames As String() = {"Dep", "frmemp", "frmset"}
Public frmsTxt As String() = {"الأقسام", "المستخدمون", "الإعدادات"}

عند إضافة مستخدم جديد في زر الحفظ وضعت هذا الكود
كود :
For i As Integer = 0 To frmsNames.Count - 1
Insert("aut", {"autEmp", empid.Text, "autForm", frmsNames(i), "autfrmname", frmsTxt(i)})
Next

كل شيء تمام إلى هنا ..

الآن ماذا لو كان لدي عدد كبير من المستخدمين مسجلين في البرنامج وأضفت نموذج جديد !! فصارت المصفوفة هكذا
كود :
Public frmsNames As String() = {"Dep", "frmemp", "frmset","country"}
Public frmsTxt As String() = {"الأقسام", "المستخدمون", "الإعدادات", "المنطقة"}

كيف أضيف صلاحيات النموذج الجديد للمستخدمين السابقين ..؟؟
فكرة الحل : البحث عن التكرار بين المصفوفة وبين جدول الصلاحيات .. ثم إضافة الغير موجودة في صفوف جديدة
الرجاء المساعدة ولكم جزيل الشكر
جزاكم الله خيراً
جلست أبحث وأجرب فوصلت إلى نتيجة صحيحة .. قد تكون مطولة لكنها أدت الغرض .. ومن لديه اختصار أو تصحيح لها فلا يبخل به ..
==========
قمت بعمل مصفوفة بجميع أرقام الموظفين empallid
ثم بجملة التكرار
كود :
For em As Integer = 0 To empallid.Count - 1
لكل رقم موظف يعمل مصفوفة (auarr) فيها أسماء الفورمات الموجودة داخل جدول الصلاحيات لذلك الموظف ( برقم الموظف )
ثم قمت باستخدام الكود التالي
كود :
Dim nolist = frmsNames.Except(auarr).ToArray()
            If nolist.Length > 0 Then
                For i As Integer = 0 To frmsNames.Count - 1
                    For n As Integer = 0 To nolist.Count - 1
                        If frmsNames(i).Contains(nolist(n)) Then
                            Insert("aut", {"autEmp", empallid(em), "autForm", frmsNames(i), "autfrmname", frmsTxt(i)})
                        End If

                    Next

                Next

            End If
فمشى الحال .. جزاكم الله خير
من عنده نصيحة أو تصحيح لا يبخل علينا