![]() |
|
زيادة ضبط لاجراء مخزن في قاعدة بيانات فايربيرد - نسخة قابلة للطباعة +- 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
ENDRE: زيادة ضبط لاجراء مخزن في قاعدة بيانات فايربيرد - Delphi4Us - 20-10-2019 السلام عليكم أجل suspend ، حل بسيط و مثالي |