الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ما افضل طريقة لعمل هذا الكود.......؟

مغلق
بدأه ابواحمد في 14 فبراير 2002 · 4 رد · 776 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

الاخوة الكرام لدي قاعدتين بيانات كالتالي:

الاولى : تحتوي على السجلات التالية:

1-بداية العدد.From

2-نهاية العدد.to

3-الكمية المستحقة.Qut

الثانية : تحتوي على سجلات منها:

1-الصنف الاول.s1

2-الصنف الثاني.s2

3- الصنف الثالث.s3

4-مجموع الاصناف.quts

5-الكمية المستحقة.ms

------ المطلوب------

ان القاعدة الاول تحتوي على بداية مثل:

من1 الى 99 يستحق 2

من 100 الى 199 يستحق 3

من 200 الى 299 يستحق 4 وهكذا.

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

بمعنى اذا ادخل المستخدم القيمة التالية:

الصنف الاول= 10

الصنف الثاني = 15

الصنف الثالث = 150

مجموع الاصناف = 175

الكمية المستحقة = 3 بناء على مافي القاعدة الاولى(من 100 الى 199).

ارجو ان يكون السؤال واضحا.

مع الشكر مقدما لكل من يساعدني في الحل.

#2

يعني مافي رد ......... العد تجاوز 67 هل السؤال صعب........!

#3

أخي أبو احمد

مبدئياً اعتقد ان الجدول الأول لا حاجة اليه اذا ان محتوياته لا تتكرر بكثرة يمكن الأستعاضة عنه بأحد انواع البيانات أو وضعها مباشرة ضمن الشروط المستخدمة في المقارنة

ألا اذا كانت هذه البيانات قابلة للتغيير من مرة الى أخري

والله أعلم

مع تحياتي

وجدي

#4

مشكوووووور اخي وجدي.

لكن المشكلة ان البيانات متغيره

تحياتي.

#5

أخي أبو أحمد

لقد قمت بعمل هذا الكود بسرعة نظراً لانشغالي بامور أخرى (لا زال يحتاج الى بعض التنقيح ) أو التعديل إن كان لا يوافق مرادك;)

ملاحظات حول الكود

*قمت بأضاقة الحرف w (الحرف الأول من أسمي :D ) لحميع عناصر الجدول الأول ليتناسب مع أستخدامها ضمن تعابير sql

*أستخدمت العنصر tquery بدلا من العنصر Ttable

* في حال كانت قاعدة البيانات الخاصة بك كبيرة رجاءً قم بتعديل الكود لكي يحدث فقط عند حدث الأضافة لاختصار زمن فتح وغلق القاعدة وأيضا المرور بالقاعدة من أولها الى أخرها

procedure TForm1.Button2Click(Sender: TObject);

var

Sqlstring,mystr :string;

begin

sqlString:='Select* From abahmed1.db where (wfrom <= %s ) and (%s <= wto )';

DBNavigator1.BtnClick(nbFirst);

while not table1.Eof do

begin

DBNavigator1.BtnClick(nbEdit);

Table1Quts.Value:=Table1S1.Value+Table1S2.Value+Table1S3.Value;

myStr:=Table1Quts.asString;

query1.Close;

query1.SQL.Clear;

query1.sql.add(format(sqlString,[mystr,mystr]));

try

query1.Open;

except

on e:EdataBaseError do messageDlg(e.message,mtError,[mbok],0);

end;

Table1Ms.Value:=Query1WQuts.Value;

DBNavigator1.BtnClick(nbNext);

end;

end;

ختاماً لكم فائق أحترامي

وجدي

هذا الموضوع مغلق.

مواضيع مشابهة