كيف أعرض الحقل المحسوب في الإستعلام؟
#1
السلام عليكم

نفرض أنه عندي جدول به منتوج وإذا كانت الكمية أكثر من 20 أنقص 0.2 من السعر
(Id,ProductName,Qty,Price,CalcPrice)ProductsTable
قمت بإضافة حقل محسوب في الجدول وفي الحدث OnCalcFields قمت بالتالي

كود :
If qty >20 then CalcPrice:=Price-0.2 else CalcPrice:=price


ما أردته وهو أن أعرض الحقل المحسوب في الفاست ريبورت عن طريق إستعلام هكذا
كود :
SELECT ProductName,Qty,Price,CalcPrice from ProductsTable


ولكن الحقل المحسوب لم يظهر في الإستعلام لماذا؟

أو هناك طريقة أفضل لحل هذه المشكلة
الرد
#2
وعليكم السلام ورحمة الله

يبدوا لي ان كل شئ طبيعي الا جملة الاستعلام الاخيرة غير منطقية فالحقل Calc لا يوجد بجدول البيانات وانما بمكون الجدول
طالما الجدول مفتوح اربطه مباشرة بمصدر بيانات الفاست ريبورت ولا تقوم باستخدام مكون استعلام جديد
مشكلتك تبدو هنا ارجو ان تكون قد فهمت المقصود
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
[-] كل من 1 user says قال شكرا ل Delphi4Us على المشاركة المفيدة
  • ALG2009
الرد
#3
ولكن انا أعرض البيانات في الفاست ريبورت عن طريق الإستعلام والذي بدوره أي الإستعلام يقوم بعرض العديد من الحقول من جداول مختلفة مربوطه بـ join
كل الحقول ظهرت إلا الحقل المحسوب لا أدري ما المشكل

لا ادري إن كانت صحيحة إدخال جملة شرطية في الـ SELECT وهل هي منطقية


(10-10-2020, 02:08 PM)Delphi4Us كتب : وعليكم السلام ورحمة الله

يبدوا لي ان كل شئ طبيعي الا جملة الاستعلام الاخيرة غير منطقية فالحقل Calc لا يوجد بجدول البيانات وانما بمكون الجدول
طالما الجدول مفتوح اربطه مباشرة بمصدر بيانات الفاست ريبورت ولا تقوم باستخدام مكون استعلام جديد
مشكلتك تبدو هنا ارجو ان تكون قد فهمت المقصود

بالفعل لا يوجد في جدول البيانات وإن وضعته على الفاست ريبورت فيظهر قيمه وحدة للجميع

ما الحل في هذه الحالة
أو إظهار البيانات بإستعلام غير صحيحة مع العلم اني سمعت انها أفضل من إستخدام الجداول
الرد
#4
إقتباس :ما الحل في هذه الحالة

أو إظهار البيانات بإستعلام غير صحيحة مع العلم اني سمعت انها أفضل من إستخدام الجداول


الامر بسيط جدا
قم بانشاء مكون استعلام يجلب البيانات 

SELECT ProductName,Qty,Price from ProductsTable


واضف فيه حقل الجمع CalcPrice وفي الحدث OnCalcFields ضع الكود الخاص بك


If qty >20 then
CalcPrice:=Price-0.2
else
CalcPrice:=price



ونفس المكون استخدمه لمصدر بيانات الفاست ريبورت
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
الرد
#5
(10-10-2020, 05:14 PM)Delphi4Us كتب :
إقتباس :ما الحل في هذه الحالة

أو إظهار البيانات بإستعلام غير صحيحة مع العلم اني سمعت انها أفضل من إستخدام الجداول


الامر بسيط جدا
قم بانشاء مكون استعلام يجلب البيانات 

SELECT ProductName,Qty,Price from ProductsTable


واضف فيه حقل الجمع CalcPrice وفي الحدث OnCalcFields ضع الكود الخاص بك


If qty >20 then
CalcPrice:=Price-0.2
else
CalcPrice:=price



ونفس المكون استخدمه لمصدر بيانات الفاست ريبورت

جزاك الله خير أخي على المساعدة لقد إستخدمت جملة If فكان الكود هكذا 

كود :
SELECT ProductName,Qty,Price,iff(qty>20,price-0.2,price) from ProductsTable

أريد أن أكتب كود صحيح ومنطقي لا أريد أن أبرمج وأن يشتغل الكود ولا يهمني شكل الكود لهذا سألت ووجد الحل و أتمنى أن يكون صحيح ولا يحدث بطئ في حال كانت قاعدة البيانات كبيرة
[-] كل من 1 user says قال شكرا ل ALG2009 على المشاركة المفيدة
  • Delphi4Us
الرد
#6
لا اعتقد ان هناك مشكلة بقاعدة بيانات كبيرة
يعني انت استغنيت عن استخدام OnCalcFields واستخدمت الاجراء المذكور للتوضيح فقط
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
الرد
#7
(10-10-2020, 08:39 PM)Delphi4Us كتب : لا اعتقد ان هناك مشكلة بقاعدة بيانات كبيرة
يعني انت استغنيت عن استخدام OnCalcFields واستخدمت الاجراء المذكور للتوضيح فقط

ما دام الحقل المحسوب لم يظهر  قمت بحسابه في الاستعلام وأظنه نفس الشيء كما قلت جزاك الله خيرا
الرد
#8
بامكانك مراجعة الدرس التالي ايضا للاخ ابو معاذ فيه طريقة اجراء المجاميع في التقرير نفسه يمكن ان يفيدك

https://delphi4arab.net/forum/showthread...5#pid52035

ملاحظة ما يميز استخدام الحدث OnCalcFields هو انه بامكانك اجراء عمليات معقدة
قل: اللهم فاطِرَ السماوات والأرض عالم الغيبِ والشهادة، ربَّ كُلِّ شَيءٍ ومَلِيكَه، أَشْهد أن لا إله إلا أنت، أعوذ بك من شرِّ نفسي وشرِّ الشيطان وشِرْكِهِ وأن أقترف على نفسي سوءًا أو أجرُّه إلى مسلم
[-] كل من 1 user says قال شكرا ل Delphi4Us على المشاركة المفيدة
  • ALG2009
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم