قبل أن نبدأ في الأمثلة راجع موضوع البرمجة بلغة لوا Lua
اهم فقرة أين تضع النص البرمجي، هنالك حتى الآن ثلاث أقسام، بداية التقرير، نهاية التقرير و التفصيل
بداية التقرير يتم تنفيذه مرة واحد، عند بدء التقرير، نستنتج أن نهاية التقرير كذلك، مرة واحد لكن عند انتهاء التقرير.
أما التفصيل فعند كل سطر من اسطر التقرير.
بداية التقرير مفيد مثلا لتهيئة المتحولات
نهاية التقرير مفيد مثلا لعملية الترتيب و التجميع للنتائج
بالرغم من أنها متوفرة مسبقا في التقارير لكن ربما نحتاج اليها في امثلة اخرى
تقرير ميزان المراجعة، قم بوضع خلية “نص” في التقرير، سم هذه الخلية Number (حافظ على حالة الحرف كبير ام صغير) و عنوان لها “الرقم”
افتح شاشة “الكود” و في بداية التقرير ادخل التالي
Count = 1
هنا تم تعريف متحول Count و يبدأ بقيمة 1 كأول قيمة
في جزء التفصيل من الكود، ادخل ما يلي
Row.Number = Count Count = Count + 1
يعني قم بتغيير الخلية Number إلى قيمة Count
وقم بزيادة قيمة Count بمقدار 1
إذا أردنا استثناء الأسطر التي اسم الحساب، او رمز الحساب (أي خلية) فيها حرف أو كلمة محددة، مثلا أريد تجاهل كل الحسابات التي في رمز 121 في رمز الحساب
تقرير ميزان المراجعة، في تصميم التقرير، خلية الرمز قم بتسميتها AccCode
افتح شاشة الكود ، في جزء التفصيل اكتب
if Row.AccCode:find('121') then Skip() end;
بمعنى افحص إذا كان AccCode يحوي 121 ، إذن تجاهل السطر Skip
طيب ماذا لو اردنا أن نتجاهل فقط التي تبدأ بـ 121 و ليست تحوي؟
الحل
if Row.AccCode:find('121') == 1 then Skip() end;
يعني إذا وجدت الـ 121 كأول حرف (رقم 1) إذن تجاهل، سهلة صح؟
إذا اردنا تجاهل التي لا تحوي 121 ؟
الحل إضافة ~ قبل الشرط، أو تحويل علاقة المساواة == إلى علاقة لا مساواة ~=
في المثال السابق، الحالة الأولى (انتبه إلى ~ بعد كلمة if )
تجاهل الأسطر التي لا تحوي 121
if ~Row.AccCode:find('121') then Skip() end;
الحالة الثانية يبدأ بـ 121 ، نقلب إشارة المساواة إلى عدم مساواة
تجاهل الأسطر التي لا تبدأ ب 121
if Row.AccCode:find('121') ~= 1 then Skip() end;
لندمج المثالين أعلاة، الترقيم، و التجاهل للحسابات التي تحوي 121
في جزء الكود “بداية التقرير” ضع
Count = 1
في جزء التفصيل
if Row.AccCode:find('121') then Skip() else Row.Number = Count Count = Count + 1 end;
الشرح: إذا كانت الخلية تحوي 121 قم بتجاهل السطر، و إلا قم بتعديل قيمة خلية Number إلى العدد Count ثم قم بزيادة العدد Count بمقدار واحد.
إذا فهمتها، بكل بساطة يمكنك تغيير الشرط بين if وبين then حسب الأمثلة اعلاه.