الفكرة كالتالي :
1.أنشات جدول إسمه Mc_Output وهو على النحو التالي:
Item------------McNo.------------Output
---10--------------------A-----------------1
---5----------------------2----------------A
---15--------------------3-----------------A
---10--------------------1-----------------B
---15--------------------2-----------------B
وزي ما انتو شايفين المنتج ممكن يتشغل على أكثر من ماكينة بأكثر من إنتاجية.
انا ابي اسوي فورم احط فية EDIT1 وبعدين اكتب فيه المنتج A,OR B و Edit2 ثاني اكتب فيه الكمية وبعدين اضغط ادخال يقوم البرنامج يفلتر الجدول السابق ويحسب ناتج قسمة الكمية على إنتاجية كل مكينة
يعني لم أدخل A في edit1 وأدخل 500 في Edit2 واضغط ادخال تطلع النتيجة كالتالي :
Item-----------McNo.-------------OutPut-------------Quantity-------------Time
--50-------------------500-------------------10----------------------1---------------A
--100-----------------500-------------------5------------------------2---------------A
--33-------------------500-------------------15----------------------3---------------A
المشكلة ان الحقول الأولى في الجدول Mc no. و Item و OutPut موجودة في الجدول أساساً أما القيمة Quantity لازم ياخذها من Edit2 ويحطها لكل المكائن اللي تطلع في الجدول بعد الفلترة زي ما هو واضح في الجدول اللي في الفورم السابق وفي هذا الجانب لاحظ انه عدد الصفوف في الجدول غير ثابت مثلا لو أدخلت المنتج B كان حيظهر صفين بس ماكينة 1 و 2 .
ايضا حقل Time هو ناتج من قسمة الحقلين Quantity على OutPut أيضا هذا الحقل غير موجود في الجدول الرئيسي ولكن يتغير بتغير Edit1 و Edit2 .
حاولت اضيف الحقلين السابقين على انهم CalculatedField بس ما عرفت الطريقة الصحيحة.
اقصى ما توصلت اليه اني اسوي عداد كالتالي : for I:=1 To Mc_Output.Recordcount do وهنا استخدمت record count لأن عددنتائج الفلترة غير ثابت يعتمد على المنتج اللي اكتبه في Edit1 والكود اللي كتبته كالتالي بس يعطيني رالة خطأ أعتقد تقول اني ما عرفت مصفوفة .. الرجاء أفيدونا
Procedure TForm1.Edit2.KeyPress;
Begin
Table1.Filterd:=False;
Table1.Filter:='[item]='''+Edit1.Text+'''';
Table1.Filterd:=True;
For I:=1 to Table1.RecordCount Do
Table1Quantity.Value:=strToint(Edit2.Text);
Table1ActualTime.Value:=Table1Quantity / Table1OutPut.Value;
End;
يعني باختصار أفلتر الجدول وبعدين اسوي عداد يلصق القيمة في كل حقول الكمية لكل النتائج في الجدول بعد الفترة وكل ما يلصق قيمة يحسب الزمن بقسمة الكمية على قيمة الانتاجية للحقل I
يعني اعتقدت ان الوب افضل طريقة ويكون حدودة من I=1 إلى عدد نتائج الفلترة Table.Recordcount ( عدد النتائج)
شباب اللي عنده حل لهذي المشكلة ياليت يسعفنا