مشاهدة النسخة كاملة : كيف لي بترتيب الخيارات في dbgrid
أمير الدلفي
03-05-2008, 03:23 PM
السلام عليكم
عسى أن يكون الجميع في تمام الصحة والعافية
في الحقيقة أنا مع مشروع أتعلم فيه بعض التطبيقات وبرزت لي مشكلة لا أظنها تعسر عليكم ألا وهي أني وضعت جدول أخزن فيه معلوامت أصدقاء ومن بين الحقول حقل : الهــواية
وأما في البرنامج فقد وضعت combobox وجعلت خيارات محددة مثلا : البرمجة ، الرياضة .....
وهذا combobox يحمل الخيار مباشرة ويضعه في حقل الهواية على طريق الكود التالي :
Table1 avocation .value := Combobox1.text ;
أما المشكل بالضبط إذا كان الصديق عنده هوايات عديدة فهل من حيلة حتى أضمها كلها في Dbgrid
***** أن يكون القصد مفهوما
merouane
03-05-2008, 03:48 PM
و عليكم السلام
أفضل حل هو أن تكون الهوايات في جدول مغاير عن جدول الأصدقاء،
وجدول أخر يحتوي على كود كل شخص وكود الهواية
ثم تقوم بالربط بين الجدولين الهوايات والجدول الأخير (مثلا هوايات الأصدقاء)
و الربط الأخر بين جدول الأصدقاء وجدول هوايات الأصدقاء
بهذا الكلام أنا افترض أنك على دراية بتحليل المعلومات على الأقل Merise
لأنني أتحدث عن جدولين أساسيين (الأصدقاء و الهوايات) وجدول الربط (هوايات الأصدقاء)
وتوجد طريقة اخرى لكنها - بالنسبة لي - أقل متانة من ناحية ثبات المعلومات
وهي استعمال ListBox مع تفعيل MultiSelect
والإضافة إلى قاعدة البيانات يكون عبر حلقة
var i:integer;
S:string;
begin
for i:=0 to listbox1.Items.Count-1 do
if ListBox1.Selected[i]then
S:=S+listbox1.items[i]+';';
Table1.FieldByName('Hobby').AsString := S;
end;
اعذرني سأذهب الآن جرب الاجراء
سأعود في المساء
أمير الدلفي
03-05-2008, 04:03 PM
شكرا جزيلا نعم أنا أتقن طريقة Merise بشكل جيد
نعم لقد جربت جدولين مع طريقة MasterSours
ولكن النتيجة لم تكن ذات نسق جميل
سأجرب الطريقة الثانية التي عرضتها علي وأي نبأ جديد سأخبرك به
شكرا
merouane
08-05-2008, 05:15 AM
السلام عليكم
كيف الحال أخي أمكروس أمبارش
اتيت اليوم بحل (قد لا يكون الأحسن) يفي بالغرض بدون ان نلمس تصميم البيانات (التحليل) ودون أن نغيير في قاعدة البيانات
ولا اخفيك ، لقد أشغلتني فكرتك حيث لم تخطري على البال أبدا
مع انها نافعة وقد يحتاجها المطور .. لذلك هذا العمل هو نتاج احتكاك عقلين و آمل من الإخوة الأعضاء التقدم بالأراء و الأفكار حتى يتطور ويحسن إلى أقصى ما يمكن الوصول إليه.
بعد بضع محاولات وصلت إلى أن أفضل طريقة لعمل ذلك هي المزج بين SQL و TableCalcFields
في المثال استعملت الجدولين المرفقين مع دلفي "customer.db" و " orders.db"
بحيث كل Customer يمكن أن تكون له 0-N من Orders
ثم أنشأت حقل تخيلي حسابي (نفس الطريقة في الموضوع كيف يمكنني تنظيم أرقام dBGRID (http://www.delphi4arab.com/forum/showthread.php?t=270))
الكود
procedure TForm1.TabCustomerCalcFields(DataSet: TDataSet);
begin
TabCustomerOrders.Value:='';
Query1.Active:=False;
Query1.SQL.Clear;
Query1.SQL.Add('Select OrderNo from "Orders.db"');
Query1.SQL.Add('where CustNo='+TabCustomerCustNo.AsString);
Query1.Active:=True;
Query1.First;
while not Query1.Eof do
begin
TabCustomerOrders.Value:= TabCustomerOrders.Value+Query1.fieldByName('OrderN o').AsString+' ; ';
Query1.Next;
end;
end;
النتيحة
http://up104.arabsh.com/my/5ce5c6c.gif
في المرفقات مثال عن ذلك
تحياتي :)
أمير الدلفي
11-05-2008, 07:54 PM
أوو شكرا لك يا بطل و لا أظن أني أزعجك وأشغل بالك كل هذه المدة
لقد توصلت الى ما |أبحث عنه بالضبط وقد طرحت موضوع بعنوان أستحسانات استعمال query لأتوصل اى النتيجة التي توصلت اليها ولكن سبقتني اليها فأحسنت وأحسن الله الجزاء ان شاء الله
على كل سأعمل جاهدا لتطبيق الفكرة وستكون مذهلة بلا شك
شكرا لك ودمت في خدمة المنتدى وأحبابه
vBulletin® v3.8.6, Copyright ©2000-2010, TranZ by Almuhajir