ar:help:codeedit

البرمجة بلغة لوا Lua

البرمجة بلغة لوا Lua بسيط جداً، خاصة إذا كنت تستخدم المعادلات أو البرمجة في برامج مثل ال Excel او Libre Calc

بعض الملاحظات عليك التنبه لها اثناء الكتابة بلغة Lua اللغة تتحسس لحالة الحرف، على عكس البيسك او الباسكال، يعني مثل لغات ال C فإذا قمت بتعريف متحول Balance لايمكن كتابة balance فلن يتعرف عليها، نفس الاْمر للتوابع و الأوامر.

عملية المساواة للمقارنة هي == و عملية الـ عدم المساواة هي ~= و عملية النفي هي ~

if Balance == 100 then
elseif Balance~=1000 then
end

كتجربة و تمرين، نستخدم تقرير ميزان المراجعة، قم بفتح تصميم التقرير، و ادخل على خصاص الخلية، قم بتسمية “الحساب” إسم برمجي Account و خلية الرصيد “Balance”و المنطقة “Place” حاول تسمية باقي الخلايا اْيضا.

الآن من الخصائص في شاشة تصميم التقرير، انقر على “الكود” لتفتح شاشة المصدر البرمجي.

سنكتب بعض الامثلة لتقوم بتجربتها، لكن تأكد اولاً، أن تميز في أي مقطع سيتم التنفيذ، لكل مقطع له برنامج خاص، يمكن برمجة جميع المقاطع.

من خلال أسماء المقاطع تستطيع تمييز متى يتم تنفيذ البرنامج، مثلاً، بداية التقرير، ام خلاله (التفاصيل)، ام بعد انتهاء التقرير، من الاْمثلة فعليا ستستطيع اْن تميز الفائدة لكل منها.

مثال تلوين

نريد تلوين بالاْحمر جميع الحسابات التي اصغر من الصفر (المدينة)

if Row.Balance < 0 then
   Color = Red
end

لا تنسى أن تقوم بتفعيل التنفيذ، ضع إشارة صح على “تفعيل”

لنرى النتائج

مثال التجميع و الترتيب GroupBy

أيضا نريد ترتيب النتائج حسب الاْسم، لاحظ الآن لانستطيع الترتيب اثناء تعبئة التقرير، بل بعد الانتهاء منه، لذلك اضغط في نافذة البرمجة على “نهاية التقرير” اْدخل البرنامج التالي، ولاحظ إستعملنا إسم الخلية بشكل منصص (بين علامات تنصيص).

Sort('Account')

سترى النتائج مرتبة حسب الحساب

عدل البرمجة إلى GroupBy ستظهر النتائج مجمعة حسب المنطقة

GroupBy('Place')

لكن ماذا لو أردنا أن نحافظ على الترتيب أيضا،البرنامج التالي يقوم بتجميع القيم حسب المنطقة، ثم يرتبها حسب الحساب.

GroupBy('Place')
Sort('Account')  

ها هي النتائج

مثال تصفية Skip

لا تنسى، احذف البرامج التي في باقي المقاطع، حتى نبدأ مثالنا الجديد

البرنامج التالي سوف يتجاهل الأسطر التي قيمتها أصغر من 2000

if Row.Balance < 2000 then
    Skip()
end

لكن هذا سوف يقوم بتجاهل الأسطر التي أصغر من الصفر أيضاً، (يعني الدائنة) و ستبقى المدينة التي أكبر الـ 2000 أو تساويها.

إذاً سنعدل البرنامج

if Row.Balance < 2000 and Row.Balance >=0 then
    Skip()
end  

معادلة

كما في إكسل Excel يمكن تعديل قيمة خلية بناءاً على قيم خلايا أُخرى، مثالنا التالي عبارة عن نسبة الرصيد الى مدين الحساب، وهي مفيدة لمعرفة نسبة ارباح العقود إلى المصاريف محاسبيا (كمثال طبعا).

إضف خلية نص فارغة، قم بتسميتها Percent و أدخل البرنامج التالي

Row.Precent = Row.Balance / Row.Debit * 100

لاحظ النتائج

يمكنك المتابعة هنا أمثلة على البرمجة

ar/help/codeedit.txt · آخر تعديل: 2021/04/23 03:11

أدوات الصفحة