EasyDelphi Q&A

.تم الانتقال للموقع الجديد . وسيبقى الموقع القديم هذا متاح للقراءة فقط حتى الانتهاء من نقل كل الاسئلة إلى الموقع الجديد

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


+2 تصويتات
45 مشاهدات

السلام عليكم :

لديا ClientDataset فيها حقول إحداها هو إن صح التعبير مفتاح خارجي ل: ClientDataSet أخرى ...(قلت إن صح التعبير مفتاح خارجي لأن هذه الداتاسات تعمل في الميموري ليس لها محرك أو جداول مثل TTable مثلا فهي تشبه كثيرا TFDMemTable التابعة لفايرداك ... )المهم أود إعطاء مثال حي لكي يفهم الجميع سؤالي جيدا ..

مثلا : 

لديا إثنان ClientDataset الأولى إسمها مثلا cds_AREA و لها حقلين فقط: ID_AREA و هو INDEX الداتا و الحقل الثاني AREA

أما الثانية إسمها مثلا cds_SECTION و لها ثلاث حقول رئيسية : ID_SECTION و هو INDEX الداتا و AREA_ID و هو حقل رقمي يعبر عن INDEX الداتاسات الأولى cds_AREA و الحقل الأخير هو SECTION 

و ما أريد عمله هو أخذ تحليل بواسطة Aggregate بالنسبة للداتاسات cds_SECTION بحيث أعرف كم يوجد SECTION  في كل AREA 
لذلك قمت بإظافة حقل جديد في داتاسات cds_SECTION من نوع TAggregateField  و أعطيته العبارة التالية : COUNT(SECTION) و أعطيته الجروب ليفال Group Level 1 المهم قمت بإعداده هو و الداتاسات بشكل جيد و هو يعمل بشكل ممتاز ...
المشكل الذي أريد حله هو كيف لي أن أقلص أو أفلتر الداتاسات حتى لا يظهر فيها أي تكرار ؟

صورة عن الموضوع:

يرجى تحميل المثال جاهز من هنا حتى يوفر الوقت في التجريب على من يريد الإجابة ...

و شكرا.

سُئل في تصنيف Database بواسطة (21,500 نقاط)
عُدل بواسطة | 45 مشاهدات

1 إجابة واحدة

0 تصويتات

الحل الأنسب هو تحميل و تثبيت المكون TxQuery على الدلفي و عمل إستعلام كالتالي:
 

Select DISTINCT AREA_ID, A_COUNT FROM Client_ds_SECTION
ORDER BY AREA_ID

من مميزات هذا المكون الأكثر من رائع:
أولا:  أنه منحدر من الكلاس TDataSet و الذي من صلاحياته عمل كويري على أكثر من مكون منحدر من الكلاس TDataSet و ذلك بإستعمال تعليمات السيكوال لست محتاجا أصلا لجداول و TTable و عمل كوناكت مع قاعدة معطيات حقيقية ...

ثانيا: من مميزاته أيضا أنه 100% دلفي و مفتوح المصدر ...

ثالثا: لا يحتاج ل DLL أو أي ThirdParty Library لكي تعمل به إستعلامات السيكوال ههههه بل لديه محرك السيكوالSQL engine خاص به و محلل بناء الجمل للسيكوال SQL syntax parser الخاص به كذلك  ...

أما فيما يخص التعليمة DISTINCT أعلاه فهي تقوم بفلترة أو التعرف على السجلات ذات الحقول المكررة و فلترتها و الحفاظ فقط على سجل واحد منها و عرضه مع البقية ...

المهم لمن يريد تحميل المثال جاهزا من هنا .

  

تم الرد عليه بواسطة (21,500 نقاط)
+1
لو كنت تستخدم TFDMemTable, كان عليك فقط أن تضيف TFIndex الى الField التي تريد عدم التكرار فيها "AREA_ID", ثم تفعل خاصية distinct. لا تحتاج مكونات خارجية.
+1

نعم معك حق لكن هذه الحالة تشترط إستعمال مكون TClientDataSet مع العلم أن السؤال أعلاه كان سؤال توعوي أكثر منه كسؤال لأنه في الأصل كان مطروحا علي في الخاص من أحد المتابعين و إشترط في طرحه العمل فقط مع المكون أعلاه و بعدما بحثت في الموضوع وجدت الحل بإستخدام هذه المكتبة أعلاه فأردت مشاركتكم الفكرة لا غير..
كما أشكرك كثيرا على الإهتمام و على المعلومة أيضا.

كذلك أردت بسؤالي الإشارة إلى مواضيع تخص مميزات و فوائد الحقول من نوع TAggregateField و Calculated Fields

اسئلة متعلقة

0 تصويتات
1 إجابة
سُئل يوليو 16، 2018 في تصنيف vcl بواسطة djaoui (1,410 نقاط) | 173 مشاهدات
+1 تصويت
2 إجابة
سُئل أغسطس 28، 2018 في تصنيف vcl بواسطة Yamada Fakir (1,810 نقاط) | 281 مشاهدات
0 تصويتات
1 إجابة
سُئل يناير 28، 2019 في تصنيف fmx بواسطة NADIRE (870 نقاط) | 165 مشاهدات
+4 تصويتات
1 إجابة
سُئل أغسطس 29، 2018 في تصنيف vcl بواسطة Ammar Salah (2,090 نقاط) | 43 مشاهدات
+4 تصويتات
2 إجابة
سُئل يوليو 12، 2018 في تصنيف SQLite بواسطة NADIRE (870 نقاط) | 110 مشاهدات
ادعُ اصدقائك في الفايسبوك لمشاركتك
Comodo SSL

مرحبًا بك إلى EasyDelphi Q&A، حيث يمكنك طرح الأسئلة والحصول على الإجابة عليها من المستخدمين الآخرين.

لا يسمح بطلب او السؤال عن كراك او تفعيل او كسر او فك او اي شيء يخالف اتفاقيات الترخيص  مهما كان السبب ومهما كان البرنامج ونوعه. ولا حتى نشر روابط تحتوي على مثل هذه الاشياء لا في الاسئلة ولا في الاجابات ولا التعليقات . نهائيا

497 سؤال
752 إجابة
1,417 تعليق
271 مستخدم