16-10-2019, 08:36 AM
السلام عليكم ورحمة الله
كنت احاول الليلة السابقة ضبط احد الاجراءات المخزنة ليكون بشكل متالي اكثر
الاجراء كان يستخدم عدد اجراءين مخزنين واردت ان يكون في اجراء واحد فقط
السطور البرمجية كما بالشكل التالي:
لاحظوا اهم سطر هو والذي يقوم بحساب مدخلات البضاعة ومبيعاتها .
حقيقة لم يكن هناك متغير هنا والذي هو هنا NEW_VAR وانما هنا حاولت وقلت ربما يضع الناتج في متغير ولكن لم يفعل
فالمهم بالعملية كلها هنا
حيث نطلب ان يقوم بفلترة البيانات التي لها حد الشراء يساوي او اكبر من كمية المشتريات - المبيعات
يعني المشتريات 1500 والمبيعات 1300 وحد الشراء 500 اذا
1500-1300=300 وحد الشراء لدينا 500 اذا يتحقق الشرط هنا في Where
ايضا سيكون هذا الحل جيد للضبط لو انه عمل ولكنه لا يعمل مع فايربيرد وهو بالشكل التالي:
الاجراء كان يستخدم اجراء فرعي اخر ليجلب القيمة ويضعها هنا
وجدت البعض يستخدم في فايربيرد شئ يسمى courses حيث يقوم باجراء عمليات علي القيم ولكن النسخة التي عندي ليس فيها هذه الميزة لاضافة شئ كهذا
فقط اسأل اذا مر على احدكم حل بسيط لذلك .
كنت احاول الليلة السابقة ضبط احد الاجراءات المخزنة ليكون بشكل متالي اكثر
الاجراء كان يستخدم عدد اجراءين مخزنين واردت ان يكون في اجراء واحد فقط
السطور البرمجية كما بالشكل التالي:
كود :
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 حيث يقوم باجراء عمليات علي القيم ولكن النسخة التي عندي ليس فيها هذه الميزة لاضافة شئ كهذا
فقط اسأل اذا مر على احدكم حل بسيط لذلك .