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

نسخة كاملة : فلترة بيانات AdvancedDataGridView
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم

أرجو المساعدة في فلترة بيانات اداة AdvancedDataGridView

قمت بالاتصال بقاعدة البيانات بطرقيتين كلُ طريقة في فورم مستقل
الطريقة الأولى: عن طريقة الكود كما في الفورم الأول، وهنا فشلتُ في فلترة البيانات
الطريقة الثانية: كما هى موضحة في الفورم الثانية؛ وهذه الاتصال يفشل إذا لم تكن قاعدة البيانات بجوار البرنامج

المطلوب فلترة البيانات في الفورم الأولى عن طريق الأداة  AdvancedDataGridView[attachment=28386]
وعليكم السلام

[attachment=28388]


[attachment=28389]


[attachment=28390]

فقط لذكر لماذا السطر المشار إلية بأنه هو من يمنع تصفية البيانات لتصل المعلومة

الــDataGridView يعرض البيانات من مصدر بيانات
مصدر البيانات :
يمكن يكون جدول DataTable
يمكن يكون ( كائن الربط ) الــ BindingSource
يمكن يكون ( كائنات أخرى ) معدة مسبقاً لتتوافق مع مصادر البيانات

في مشروعك الأصلي :
قمت أنت بإعطاء الــ AdvancedDataGridView1 مصدر بيانات مباشر وهو الجدول DT بواسطة السطر التالي كما هو في مشروعك الأصلي :
AdvancedDataGridView1.DataSource = DT

أصبح الآن مصدر البيانات هو الجدول مباشرتاً 
الجدول لا يدعم الــ Sorting ( الفرز أو الترتيب ) ولا يدعم الــ Filtering ( التصفية )

لذلك يجب إسناد مصدر البيانات لكائن يدعم هذة الأمور
مثل : ( الــ  BindingSource  )


في المشروع المرفق لك بعد التعديل :
تم إضافة الــ  BindingSource في صينية النافذة 
لاحظ تسلسل ربط البيانات : 

 الــ AdvancedDataGridView1 ---> مربوط بالـــ BindingSource   --->  والـــ BindingSource   ---> مربوط بالـــ Data_BaseDataSet.TBL_archives

أي بما معناه أن  الــ AdvancedDataGridView1 لا يرتبط بالجدول بشكل مباشر ، بل هناك وسيط (BindingSource) يربط الإثنين ببعض ويدعم الفرز والتصفية
[attachment=28391]
(31-10-22, 09:55 AM)عبدالله الدوسري كتب : [ -> ]وعليكم السلام









فقط لذكر لماذا السطر المشار إلية بأنه هو من يمنع تصفية البيانات لتصل المعلومة

الــDataGridView يعرض البيانات من مصدر بيانات
مصدر البيانات :
يمكن يكون جدول DataTable
يمكن يكون ( كائن الربط ) الــ BindingSource
يمكن يكون ( كائنات أخرى ) معدة مسبقاً لتتوافق مع مصادر البيانات

في مشروعك الأصلي :
قمت أنت بإعطاء الــ AdvancedDataGridView1 مصدر بيانات مباشر وهو الجدول DT بواسطة السطر التالي كما هو في مشروعك الأصلي :
AdvancedDataGridView1.DataSource = DT

أصبح الآن مصدر البيانات هو الجدول مباشرتاً 
الجدول لا يدعم الــ Sorting ( الفرز أو الترتيب ) ولا يدعم الــ Filtering ( التصفية )

لذلك يجب إسناد مصدر البيانات لكائن يدعم هذة الأمور
مثل : ( الــ  BindingSource  )


في المشروع المرفق لك بعد التعديل :
تم إضافة الــ  BindingSource في صينية النافذة 
لاحظ تسلسل ربط البيانات : 

 الــ AdvancedDataGridView1 ---> مربوط بالـــ BindingSource   --->  والـــ BindingSource   ---> مربوط بالـــ Data_BaseDataSet.TBL_archives

أي بما معناه أن  الــ AdvancedDataGridView1 لا يرتبط بالجدول بشكل مباشر ، بل هناك وسيط (BindingSource) يربط الإثنين ببعض ويدعم الفرز والتصفية

بارك الله فيك أخي الكريم وأستاذي القدير عبد الله الدوسري ونحن مازلنا نتعلم منكم ولاسيما أنا حديث العهد بالدوت نت
كما علمت أن المطلوب أن تكون قاعدة البيانات في ملف باسم DataBase الموجود في Debug وليس بجوار المشروع
وهذا الذي ما أريده بالضبط أن تكون قاعدة البيانات وفق المسار الذي حددته
ولاحظ  الخطأ عندما تكون القاعدة في المجلد المذكور DataBase << Debug

[attachment=28392]
جرب  أن تضع هذا السطر قبل تنفيذ الإستعلام Fill
كود :
AppDomain.CurrentDomain.SetData("DataDirectory", My.Application.Info.DirectoryPath)

طبعاً هذا ليس حل مثالي ، لكن للتأكد من مصدر التصرف الغريب عند إن شاء نص الإتصال بإستخدام ( نص الاستبدال - |DataDirectory) الموجود في نص الإتصال
المفروض أن يتم إستبدال الكلمة ( |DataDirectory| ) الموجودة في نص الإتصال بــ ( المسار الحالي لمخرجات المشروع - حسب الإعدادات - 
إما في مجلد الــ Debug 
C:\WindowsApplication1\WindowsApplication1\bin\Debug
أو في مجلد Release
C:\WindowsApplication1\WindowsApplication1\bin\Release
 )

لكن من الواضح أن هناك خلل في تعيين المسار ، كما هو مبين في رسالة الخطاء 
وهو أن اسم المجلد  ( WindowsApplication1 ) مكرر 3 مرات كالتالي : أي ان هناك إضافة غير متوقعة لأسم المجلد الرئيسي WindowsApplication1 
C:\WindowsApplication1\WindowsApplication1\WindowsApplication1\bin\Release

والمفترض أن يكون بهذا الشكل : 
C:\WindowsApplication1\WindowsApplication1\bin\Release


جرب الكود في الأعلى لمعرفة إذا كان الخلل في هذة الجزئية

ملاحظة كلمة |DataDirectory| ليس مطلوب منك أن تتعامل معها , عناصر الإتصال الموجودة في البرنامج هي من ستقوم بعملية الإستبدال بشكل تلقائي
[attachment=28394]

ليصبح الكود كالتالي :
[attachment=28395]
(31-10-22, 03:13 PM)عبدالله الدوسري كتب : [ -> ]جرب  أن تضع هذا السطر قبل تنفيذ الإستعلام Fill
كود :
AppDomain.CurrentDomain.SetData("DataDirectory", My.Application.Info.DirectoryPath)

طبعاً هذا ليس حل مثالي ، لكن للتأكد من مصدر التصرف الغريب عند إن شاء نص الإتصال بإستخدام ( نص الاستبدال - |DataDirectory) الموجود في نص الإتصال
المفروض أن يتم إستبدال الكلمة ( |DataDirectory| ) الموجودة في نص الإتصال بــ ( المسار الحالي لمخرجات المشروع - حسب الإعدادات - 
إما في مجلد الــ Debug 
C:\WindowsApplication1\WindowsApplication1\bin\Debug
أو في مجلد Release
C:\WindowsApplication1\WindowsApplication1\bin\Release
 )

لكن من الواضح أن هناك خلل في تعيين المسار ، كما هو مبين في رسالة الخطاء 
وهو أن اسم المجلد  ( WindowsApplication1 ) مكرر 3 مرات كالتالي : أي ان هناك إضافة غير متوقعة لأسم المجلد الرئيسي WindowsApplication1 
C:\WindowsApplication1\WindowsApplication1\WindowsApplication1\bin\Release

والمفترض أن يكون بهذا الشكل : 
C:\WindowsApplication1\WindowsApplication1\bin\Release


جرب الكود في الأعلى لمعرفة إذا كان الخلل في هذة الجزئية

ملاحظة كلمة |DataDirectory| ليس مطلوب منك أن تتعامل معها , عناصر الإتصال الموجودة في البرنامج هي من ستقوم بعملية الإستبدال بشكل تلقائي


ليصبح الكود كالتالي :

استاذ عبد الله يحزنني أن أقول أنني فشلت في جميع المحاولات؛ ولا أدري أين الخطأ؟!
فأتمنى منك شاكرا لك كل ما قدمت أن تعدل المثال ....