السلام عليكم
أرجو المساعدة في فلترة بيانات اداة 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| ليس مطلوب منك أن تتعامل معها , عناصر الإتصال الموجودة في البرنامج هي من ستقوم بعملية الإستبدال بشكل تلقائي
ليصبح الكود كالتالي :
استاذ عبد الله يحزنني أن أقول أنني فشلت في جميع المحاولات؛ ولا أدري أين الخطأ؟!
فأتمنى منك شاكرا لك كل ما قدمت أن تعدل المثال ....