البرمجة بلغة لوا 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
لا تنسى أن تقوم بتفعيل التنفيذ، ضع إشارة صح على “تفعيل”
لنرى النتائج
أيضا نريد ترتيب النتائج حسب الاْسم، لاحظ الآن لانستطيع الترتيب اثناء تعبئة التقرير، بل بعد الانتهاء منه، لذلك اضغط في نافذة البرمجة على “نهاية التقرير” اْدخل البرنامج التالي، ولاحظ إستعملنا إسم الخلية بشكل منصص (بين علامات تنصيص).
Sort('Account')
سترى النتائج مرتبة حسب الحساب
عدل البرمجة إلى GroupBy ستظهر النتائج مجمعة حسب المنطقة
GroupBy('Place')
لكن ماذا لو أردنا أن نحافظ على الترتيب أيضا،البرنامج التالي يقوم بتجميع القيم حسب المنطقة، ثم يرتبها حسب الحساب.
GroupBy('Place') Sort('Account')
ها هي النتائج
لا تنسى، احذف البرامج التي في باقي المقاطع، حتى نبدأ مثالنا الجديد
البرنامج التالي سوف يتجاهل الأسطر التي قيمتها أصغر من 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
لاحظ النتائج
يمكنك المتابعة هنا أمثلة على البرمجة