TClientDataSet قدرات كبيرة
#1
السلام عليكم
نضرة خاطفة على هذا المكون

تكمن قوة ClientDataSet في حفظ البيانات في الذاكرة اي انه يمكنك ان تعمل بشكل منفصل عن قاعدة البيانات هو لا يختلف عن اي مكون وصول مثل TTable
المبدأ الاساسي كما قلنا ان يتم حفظ البيانات في الذاكرة سيناريو بسيط يمكنك ان تستلف كابل انترنت في الصباح الباكر تتصل بالنت تحمل قاعدة البيانات الخاصة بك تحذف/تعدل/تضيف و في نهاية اليوم
تعيد استلاف الكابل و تحفظ البيانات الى قاعدة البيانات! عفوا تفكير جزائري... بشكل اخر تريد ان تضيف سجل جديد تفتح الـ DataSet تجعلها على الوضع insert تملئ الحقول و تستدعي Post
هذه الاخيرة ليست كالمعتاد مع ClientDataSet فهي لا تقوم بنقل البيانات الى قاعدة البيانات و انما كما قلت يتم حفض السجل في الذاكرة على انه مضاف و لكي يتم حفظ السجل في قاعدة البيانات يجب ان
تستدعي ApplyUpdate و تمرر عدد اللاخطاء المسموح بها من زاوية اخرى ClientDataSet يمتلك نوعين من البيانات Data و Delta عندما نتحدث عن Data فاننا نتحدث
عن البيانات التي لها ما يكافئها في قاعدة البيانات Delta ليس لها ما يكافئها و انما يتم تسجيل كل التغييرات المحدثة على البيانات فعندما تحذف سجل ما مثلا يتم الاشارة في الـ Delta على ان هذا السجل تم حذفه
عندما تستدعي ApplyUpdate يتم مقارنة الـ Delta و الـ Data و يقوم الـ DataSetProvider بتوليد جمل الـ Sql حسب الطلب لا تقلق هو ذكي كفاية ليفعل ذلك
ClientDataSet يعمل بشكل رائع مع DBExpress ما مشكلة DBExpress مكون SqlDataSet لديه القدرة قراءة و الى الامام فقط ماذا يعني هذا يمكن تحمل جدول Clients
مثلا باستخدام ِSqlDataSet و عرضه في DBGrid يمكن تصفح DBGrid نزولا اذا حاولت الصعود سيفاجئك خطأ !! هذه احد المشاكل لا يتوفر على خاصية Prior !! تقوم بوضع
SqlDataSet و تضع مكون DataSetProvider تربط DataSetProvider الى الـ SqlDataSet تضيف ClientDataSet و تربطه مع DataSetProvider
الان تغلبنا على المشكلة يجيد الـ SqlDataSet قراءة البيانات من قاعدة البيانات يمررها الى DataSetProvider الذي بدوره يمررها الى ClientDataSet كمل تعلم ClientDataSet
لديه القدرة على تخزين البيانات في الذاكرة عندما تستتدعي ApplyUpdate يتم مقارنة Data و Delta يقوم الـ Provider بتوليد جمل الـ Sql و يرسلها بدورة الى SqlDataSet
الذي بدوره يسجلها في قاعدة البيانات و هكذا تم التغلب على مشاكل DBExpress
بما ان ClientDataSet يسجل البيانات في الذاكرة عمليات البحث و الفلترة سريعة للغاية مقارنة بتقنيات وصول اخرى..
...ليس هذا و حسب يمكن للـ ClientDataSet ان يعمل كجدول مفصول تماما عن قاعدة البيانات اي تنشئ جدولا و لا يوجد ما يقابله في قاعدة البيانات و عند التعامل معه فانت تتعامل معه مثلما تتعامل مع اي جدول اخر اضافة حذف تعديل لفعل ذلك ضع المكون نقر باليسار و اختر CreateDataSet ثم DoubleClick و اضق الحقول الخاصة بك ...
اترك لكم مزيد من الاستكشاف
و السلام عليكم
و لرب نازلة يضيق لها الفتى ذرعا و عند الله منها المخرج
ضاقت فلما استحكمت حلقاتها فرجت و كنت اضنها لا تفرج
[-] كل من 6 users say قال شكرا ل S.FATEH على المشاركة المفيدة
  • لؤي, azertyuihayat2013, delphi17, Delphi4Us, سعود, aymen
الرد
#2
أخي هل من أمثلة على ماقلت و أرفعه لنا في المرفقة ولك الشكر

فمن يعمل مثقال ذرة خيرا يره
[-] كل من 1 user says قال شكرا ل merzoug2020 على المشاركة المفيدة
  • سعود
الرد
#3
(05-03-2016, 01:28 PM)merzoug2020 كتب : أخي هل من أمثلة على ماقلت و أرفعه لنا في المرفقة ولك الشكر

فمن يعمل مثقال  ذرة خيرا يره
السلام عليكم
تابع مع الفيديو الموجود في هده المشاركة
http://delphi4arab.net/forum/showthread....C+IBExpert

بالتوفيق
و من طلب العلوم بغير كد _________ سيدركها إذا شاب الغراب
[-] كل من 1 user says قال شكرا ل bassem_43 على المشاركة المفيدة
  • سعود
الرد
#4
شكراً بارك الله فيك على المعلومات المفيد ربي يحفظك
[-] كل من 1 user says قال شكرا ل ziad121 على المشاركة المفيدة
  • سعود
الرد
#5
السلام عليكم ورحمة الله مقال جميل شكراً
[-] كل من 1 user says قال شكرا ل ziadallaghi على المشاركة المفيدة
  • سعود
الرد
#6
حسب علمي هذه التقنية موجودة في الجداول تعمل مع الذكرة كنت عملت عليها من قبل ما قواعد البيانات من برادوكس
[-] كل من 1 user says قال شكرا ل delphi17 على المشاركة المفيدة
  • سعود
الرد


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


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