delphi4arab منتديات دلفي للعرب
زيادة ضبط لاجراء مخزن في قاعدة بيانات فايربيرد - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : زيادة ضبط لاجراء مخزن في قاعدة بيانات فايربيرد (/showthread.php?tid=10497)



زيادة ضبط لاجراء مخزن في قاعدة بيانات فايربيرد - Delphi4Us - 16-10-2019

السلام عليكم ورحمة الله

كنت احاول الليلة السابقة ضبط احد الاجراءات المخزنة ليكون بشكل متالي اكثر
الاجراء كان يستخدم عدد اجراءين مخزنين واردت ان يكون في اجراء واحد فقط

السطور البرمجية كما بالشكل التالي:

كود :
begin For select     Sum(body.qin  -  body.qout) NEW_VAR ,     sanf.mname,     mitems.mname,     munit.mname,     munit.bye_level,     munit.cell_level from munit    inner join mitems on (munit.mindex = mitems.id)    inner join body on (mitems.id = body.items_no)    inner join sanf on (mitems.mindex = sanf.id) where( (munit.bye_level >= :NEW_VAR) ) group by sanf.mname, mitems.mname, munit.mname, munit.bye_level,munit.cell_level into :NEW_VAR, SANF_MNAME, MITEMS_MNAME,MUNIT_MNAME, BEY_LEVEL ,cell_level DO   suspend; end

لاحظوا اهم سطر هو والذي يقوم بحساب مدخلات البضاعة ومبيعاتها .

كود :
Sum(body.qin  -  body.qout) NEW_VAR ,


حقيقة لم يكن هناك متغير هنا والذي هو هنا NEW_VAR وانما هنا حاولت وقلت ربما يضع الناتج في متغير ولكن لم يفعل


فالمهم بالعملية كلها هنا

كود :
where( (munit.bye_level >= :NEW_VAR) )


حيث نطلب ان يقوم بفلترة البيانات التي لها حد الشراء يساوي او اكبر من كمية المشتريات - المبيعات
يعني المشتريات 1500 والمبيعات 1300 وحد الشراء 500 اذا
1500-1300=300 وحد الشراء لدينا 500 اذا يتحقق الشرط هنا في Where

ايضا سيكون هذا الحل جيد للضبط لو انه عمل ولكنه لا يعمل مع فايربيرد وهو بالشكل التالي:

كود :
where( (munit.bye_level >= Sum(body.qin  -  body.qout)) )

الاجراء كان يستخدم اجراء فرعي اخر ليجلب القيمة ويضعها هنا

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


RE: زيادة ضبط لاجراء مخزن في قاعدة بيانات فايربيرد - Delphi4Us - 17-10-2019

احدى الطرق عدم استخدام عبارة where والقيام بالفلترة من المكون Table او Procedure وجاري البحث عن طرق اخرى


RE: زيادة ضبط لاجراء مخزن في قاعدة بيانات فايربيرد - bahmani - 20-10-2019

السلام عليكم
حذف عبارة where
تغيير في procedure كما يلي :

كود :
DO BEGIN IF (munit.bye_level >= :NEW_VAR) THEN suspend END
بالتوفيق


RE: زيادة ضبط لاجراء مخزن في قاعدة بيانات فايربيرد - Delphi4Us - 20-10-2019

السلام عليكم

أجل suspend ، حل بسيط و مثالي