![]() |
|
TClientDataSet قدرات كبيرة - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي التقنية (https://delphi4arab.net/forum/forumdisplay.php?fid=6) +--- قسم : دلفي و التعامل مع قواعد البيانات (https://delphi4arab.net/forum/forumdisplay.php?fid=23) +--- الموضوع : TClientDataSet قدرات كبيرة (/showthread.php?tid=5977) |
TClientDataSet قدرات كبيرة - S.FATEH - 26-02-2014 السلام عليكم نضرة خاطفة على هذا المكون تكمن قوة 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 و اضق الحقول الخاصة بك ... اترك لكم مزيد من الاستكشاف و السلام عليكم RE: TClientDataSet قدرات كبيرة - merzoug2020 - 05-03-2016 أخي هل من أمثلة على ماقلت و أرفعه لنا في المرفقة ولك الشكر فمن يعمل مثقال ذرة خيرا يره RE: TClientDataSet قدرات كبيرة - bassem_43 - 05-03-2016 (05-03-2016, 01:28 PM)merzoug2020 كتب : أخي هل من أمثلة على ماقلت و أرفعه لنا في المرفقة ولك الشكرالسلام عليكم تابع مع الفيديو الموجود في هده المشاركة http://delphi4arab.net/forum/showthread.php?tid=6789&highlight=%D8%A8%D8%B1%D9%85%D8%AC%D8%A9+%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA+%D9%82%D9%88%D8%A7%D8%B9%D8%AF+%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA+%D8%A8%D8%A7%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85+FireBird%2C+DBExpress%2C+IBExpert بالتوفيق RE: TClientDataSet قدرات كبيرة - ziad121 - 03-08-2016 شكراً بارك الله فيك على المعلومات المفيد ربي يحفظك RE: TClientDataSet قدرات كبيرة - ziadallaghi - 19-10-2018 السلام عليكم ورحمة الله مقال جميل شكراً RE: TClientDataSet قدرات كبيرة - delphi17 - 20-10-2018 حسب علمي هذه التقنية موجودة في الجداول تعمل مع الذكرة كنت عملت عليها من قبل ما قواعد البيانات من برادوكس |