تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] طريقة مختلفةلحفظ بيانات Datagridview
#10
السلام عليكم و رحمة الله و بركاته
الاخ ابو محمد القحطاني,
كلامك صحيح و يحتاج الى توضيح اكثر , عند تعاملك مع DataGridView مربوط بـــ DataSet و هذا الاخير يتم ملئه عن طريق DataAdapter
و تحديث السجلات يجري من DataSet الى قاعدة البيانات مالذي يحصل , او ما السيناريو الذي تعمل عليه هذه التقنية ؟؟
بمثال بسيط هو ما يجري تماما عندما تقوم بربط البيانات عن طريق المعالج , اذا تتبعت الكود الناتج ستلاحظ ان العمليات (الاضافة و الحذف و التعديل) تجري وفق حلقة تكرارية و لكن ليس لكل السجلات , و انما للسجلات التي تعرضت لتغيرات فقط .
و هنا يتم استخدام Dataset مؤقته تحتوي على السجلات التي تم اجراء تعديلات عليها فقط وفق حالة كل صف عبر الخاصية DataRowState و التي تحمل 3 حالات (معدل , مضاف , محذوف) , ومن ثم بعدها يتم عمل حلقة تكرارية تقوم بالعملية المناسبة لكل سجل (بالنهاية انت لن تقوم بالمرور على كل السجلات , فقط السجلات التي جرى علها تغيير)
هذا هو لب العمل و لا يمكنك عمل وظيفة تقوم بالتحديث الكلي لكائن DataSet دون فحص حالة كل سجل (كما يسأل البعض)
لانك بالمنطق تتعامل مع كائنات منفصلة كل كائن له حالته (الكائن= السجل) و هذه الكائنات تقبع في حاوية (جدول او DataSet)

الاخ ابو زيد,
هذه الطريقة التي في المثال هي ما تحدثنا عنه في السطور السابقة صاحب المثال اغفل عن قصد او جهل او توفيرأ للوقت ما الذي يجري عند استخدام كائن CommandBuilder  
هذا الكائن يحتاج الى اوامر (ادخال و حذف و تعديل) و يحتاج الى معالجة السجلات التي تغيرت فقط كما اشرنا سابقاً
و يحتاج الى معالجة كل سجل على حدا و استصدار الامر المناسب لكل سجل و من ثم يتم معالجة السجلات الراجعة من القاعدة و تحديث السجلات التي على الواجهة (و خصوصاً سجلات المفتاح الرئيسي و له تعامل خاص)
و كل هذا يجري في الخفاء بعيداً عن عين المبرمج في حال استخدمته للامور البسيطة اما اذا كنت مصراً على استخدامه في امور معقدة فستحتاج الى معالجات اضافية ليصبح اكثر وثوقية (و غالباً ستعاني من مشاكل معه ؟؟) الكلام طويل في هذا الكائن.

نصيحة :
مالذي يجبرك على استحضار هذا الكم الكبير من السجلات الى الواجهة (بشكل منطقي ستعاني من تاخر في معالجة هذا الكم)
الطريقة الاكثر حرفية هي التعامل مع هدف محدد او مجموعة اهداف قليلة و اختيار الادوات الاكثر سرعة في التعامل .
الــ DataReader اسرع في جلب البيانات من غيرها .

تعامل مع البيانات التي جرى عليها تغيير فقط , توفر في الوقت و الجهد اللازم من قبل المعالج , قد يكون لديك الف سجل على الواجهة لكن المستخدم عدل و اضاف و حذف ما مجموعه 100 سجل , فهل من المنطق ان اقوم بالمرور على الف سجل و بالتالي القيام بالف عملية بينما احتاج الى 100 عملية .


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

بالتوفيق للجميع.
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال
الرد }}}


الردود في هذا الموضوع
RE: طريقة مختلفةلحفظ بيانات Datagridview - بواسطة ابو ليلى - 15-08-17, 03:59 PM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [VB.NET] طريقة تفعيل الشاشة الصغيرة في جهاز الكاشير MOHAMMED ALZWI 0 257 25-09-25, 02:17 PM
آخر رد: MOHAMMED ALZWI
  [سؤال] طريقة توسيط النص داخل اداة comboBox سمير1404 7 3,862 24-08-25, 01:01 PM
آخر رد: أبو خالد الشكري
  [Acces2007] مشكلة ملف قاعدة بيانات access للقراءة فقط mmaalmesry 11 1,479 29-04-25, 08:55 PM
آخر رد: mmaalmesry
  مساعدة في طريقة تحميل الفيديوهات المخزنة في قاعدة البيانات foad8920 0 663 24-04-25, 12:58 PM
آخر رد: foad8920
  مشكلة عدم قراءة قاعدة بيانات MS access 0 424 29-03-25, 01:58 PM
آخر رد: ibraa939
  مشكلة عدم قراءة قاعدة بيانات MS access 0 354 29-03-25, 01:57 PM
آخر رد: ibraa939
  مشكلة عدم قراءة قاعدة بيانات MS access 0 291 29-03-25, 01:57 PM
آخر رد: ibraa939
  [VB.NET] محتاج اربط DataGridView بزر بحث bakrycold 1 556 28-02-25, 12:11 AM
آخر رد: bakrycold
  طريقة طباعة ملف pdf بقاعدة بيانات sql heem1986 0 524 25-02-25, 09:31 AM
آخر رد: heem1986
  ادخال درجات الطلاب لقاعدة بيانات اكسس .. مساعدة Tajaldeen 9 2,751 07-02-25, 07:59 PM
آخر رد: الورد2

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم