منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[VB.NET] إيجاد الفرق بين مصفوفة وعمود مع إضافة المفقود - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم قواعد البيانات (http://vb4arb.com/vb/forumdisplay.php?fid=40)
+--- قسم : قسم أسئلة قواعد البيانات تحت بيئة الـ.NET (http://vb4arb.com/vb/forumdisplay.php?fid=41)
+--- الموضوع : [VB.NET] إيجاد الفرق بين مصفوفة وعمود مع إضافة المفقود (/showthread.php?tid=17725)



إيجاد الفرق بين مصفوفة وعمود مع إضافة المفقود - rohiem - 20-10-16

السلام عليكم ورحمة الله وبركاته
لدي جدول للموظفين ... وجدول آخر للصلاحيات
في جدول الصلاحيات لدي الحقول التالية ( رقم المستخدم، إسم الفورم ، تسمية الفورم ، فتح ، إضافة )
هذا صف مثلاً : ( 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() = {"الأقسام", "المستخدمون", "الإعدادات", "المنطقة"}

كيف أضيف صلاحيات النموذج الجديد للمستخدمين السابقين ..؟؟
فكرة الحل : البحث عن التكرار بين المصفوفة وبين جدول الصلاحيات .. ثم إضافة الغير موجودة في صفوف جديدة
الرجاء المساعدة ولكم جزيل الشكر


RE: إيجاد الفرق بين مصفوفة وعمود مع إضافة المفقود - rohiem - 21-10-16

جزاكم الله خيراً
جلست أبحث وأجرب فوصلت إلى نتيجة صحيحة .. قد تكون مطولة لكنها أدت الغرض .. ومن لديه اختصار أو تصحيح لها فلا يبخل به ..
==========
قمت بعمل مصفوفة بجميع أرقام الموظفين 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
فمشى الحال .. جزاكم الله خير
من عنده نصيحة أو تصحيح لا يبخل علينا