08-05-2008, 05:15 AM
السلام عليكم
كيف الحال أخي أمكروس أمبارش
اتيت اليوم بحل (قد لا يكون الأحسن) يفي بالغرض بدون ان نلمس تصميم البيانات (التحليل) ودون أن نغيير في قاعدة البيانات
ولا اخفيك ، لقد أشغلتني فكرتك حيث لم تخطري على البال أبدا
مع انها نافعة وقد يحتاجها المطور .. لذلك هذا العمل هو نتاج احتكاك عقلين و آمل من الإخوة الأعضاء التقدم بالأراء و الأفكار حتى يتطور ويحسن إلى أقصى ما يمكن الوصول إليه.
بعد بضع محاولات وصلت إلى أن أفضل طريقة لعمل ذلك هي المزج بين SQL و TableCalcFields
في المثال استعملت الجدولين المرفقين مع دلفي "customer.db" و " orders.db"
بحيث كل Customer يمكن أن تكون له 0-N من Orders
ثم أنشأت حقل تخيلي حسابي (نفس الطريقة في الموضوع كيف يمكنني تنظيم أرقام dBGRID )
الكود
النتيحة
في المرفقات مثال عن ذلك
تحياتي
كيف الحال أخي أمكروس أمبارش
اتيت اليوم بحل (قد لا يكون الأحسن) يفي بالغرض بدون ان نلمس تصميم البيانات (التحليل) ودون أن نغيير في قاعدة البيانات
ولا اخفيك ، لقد أشغلتني فكرتك حيث لم تخطري على البال أبدا
مع انها نافعة وقد يحتاجها المطور .. لذلك هذا العمل هو نتاج احتكاك عقلين و آمل من الإخوة الأعضاء التقدم بالأراء و الأفكار حتى يتطور ويحسن إلى أقصى ما يمكن الوصول إليه.
بعد بضع محاولات وصلت إلى أن أفضل طريقة لعمل ذلك هي المزج بين SQL و TableCalcFields
في المثال استعملت الجدولين المرفقين مع دلفي "customer.db" و " orders.db"
بحيث كل Customer يمكن أن تكون له 0-N من Orders
ثم أنشأت حقل تخيلي حسابي (نفس الطريقة في الموضوع كيف يمكنني تنظيم أرقام dBGRID )
الكود
كود :
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('OrderNo').AsString+' ; ';
Query1.Next;
end;
end;النتيحة
![[صورة: 5ce5c6c.gif]](http://up104.arabsh.com/my/5ce5c6c.gif)
في المرفقات مثال عن ذلك
تحياتي

