اذهب الي المحتوي
أوفيسنا

الردود الموصى بها

قام بنشر (معدل)

من له طريقة استدعاء قيمة من حقل محسوب في اي نموذج في النظام او تقرير او جدول من اجل تكون رصيد اول المده واخر المده استدعاء قيمة حقل محسوب من النموذج الى التقارير عن طريق المودل او الماكروا

هذا الشرح المهندس/ ايهاب عثمان في منتدى الفريق العربي ولكن المرفق عندهم الصفحة غير موجودة

 

نتكلم عن ثلاثة أنواع من الأرصدة

1 – الرصيد التراكمي وهو الرصيد الذي يتم تسجيله في نهاية كل سطر(عملية) محاسبية وهو عبارة عن الرصيد السابق + الحركة المدينة – الحركة الدائنة ويتم تسجيله في عامود واحد باشارة موجبة للرصيد المدين أو سالبة للرصيد الدائن . وطريقة العرض هذه تستخدم في كشوف الحركة مثل كشف حركة الخزينة

2 – الرصيد الأفقي يكون العرض هنا ببساطة شديدة لاسم الحساب ورصيد اول المدة (المدين في عامود والدائن في عامود) يليه الحركة ثم رصيد اخر المدة بنفس الطريقة والكل في صف واحد وهذه الطريقة هي الخاصة بموازين المراجعة..

3 – الرصيد الرأسي وهو عبارة عن رصيد افتتاحي في بداية التقرير تليه الحركات المدينة والدائنة ة(كل حركة في سجل) وفي نهاية التقرير يظهر رصيد نهاية المدة وتستخدم هذه الطريقة في إعداد كشوف الحساب

--------------------------

حول المثال المرفق :

1 - هنا تجدون المثال الخاص بهذا الدرس نموذج الافتتاح اسمه Arg كل ما يطلبه منك هو تاريخ بداية وتاريخ نهاية الفترة المطلوب عرض ارصدتها (يفضل ان تكتب التاريخ

من 1/1/2008 إلى 31/12/2008)

و اسم الحساب الذي تريد عرض نتائجه

وبأسفل النموذج تجدون جدولا لاختيار نوع الرصيد (الأنواع الثلاثة المذكورة أعلاه) ووسيلة العرض سواء على شكل استعلام أو تقرير..

ولاحظوا أن النوع الثاني من الأرصدة (ميزان المراجعة) لا يتطلب بالضرورة تحديد اسم الحساب فلو تركت مكان اسم الحساب فارغاًً لظهرت لك جميع الحسابات

بعد ذلك ليس إلا أن تضغط على الزر الموجود أسفل النموذج لتظهر لك النتائج.

2 – قد يثور تساؤل ما الفائدة من عرض الأرصدة في شكل استعلام ثم في شكل تقرير أليس الاستعلام هو مصدر التقرير؟؟

أقول لك نعم ولكن الية العمل وطريقة الحساب للأرصدة تختلف في الاستعلام عنها في التقرير وإذا لاحظت ستجد أن الصيغ الموجودة بالحقول المحسوبة داخل الاستعلامات تختلف عنها في مربعات النصوص داخل التقارير.

3 – بيانات المثال كلها موجودة في جدول بسيط للغاية اسمه Data حقوله هي

Docid - نوع (ترقيم تلقائي) لإدخال رقم المستند ... ولاحظ أن نوع الحقل هنا هو الفكرة الاساسية لحساب الارصدة داخل الاستعلامات

Acc - نوع (نص) لإدخال إسم الحساب

DocDt – نوع (تاريخ/وقت) لإدخال تاريخ المستند

Db – نوع (عملة) لإدخال المبالغ المدينة

Cr – نوع (عملة) لإدخال المبالغ الدائنة

وبيانات الجدول بسيطة جداً عبارة عن مجموعة من الحركات الدائنة والمدينة خلال عامي 2007 و 2008 لحسابات أسماؤها a – b- c

هذا هو الجدول الوحيد لدينا وعليه بنيت كافة الاستعلامات والتقارير

---------------------------

الاستعلامات والتقارير بنيتها وآليات عملها :

طبقاً لأنواع الارصدة الموجودة بالمثال سنرتب حديثنا عن الاستعلامات والتقارير الخاصة بكل نوع

1 - رصيد تراكمي (كشف حركة)

أ - الاستعلام :

اسمه AccBl بنيناه كما يلي:

*** انشأنا ثلاثة استعلامات متتابعة الاول op01 مبني على الجدول Data وظيفته تحديد كافة الممعاملات السابقة لتاريخ بداية الفترة المختارة عن طريق المعيار الخاص بحقل التاريخ DocDt وكان المعيار هو

<[Forms]![Arg]![a]

حيث A هو اسم مربع النص الذي ستكتب فيه تاريخ البداية داخل النموذج

وايضا تحديد اسم الحساب عن طريق معيار تحت حقل اسم الحساب وكان المعيار هو

<[Forms]![Arg]![acc]

حيث acc هو اسم مربع النص الذي ستختار فيه اسم الحساب داخل النموذج

بناءً على هذه الاستعلام انشأنا استعلام OP02 لتجميع الحركات المدينة والدائنة SumOfDb و SumOfCr

ثم الاستعلام Op03 لايجاد المحصلة (مدينة أو دائنة) ووضعه في مكانه الصحيح

الان معك الاستعلامop03 لعرض الرصيد الافتتاحي للحساب الذي اخترته عن الفترة محل البحث.

*** الحركة خلال الفترة جمعناها في الاستعلام Tr المبني على جدولنا وذلك لنفس اسم الحساب (بنفس المعيار السابق) وللفترة من بداية الفترة الى نهايتها عن طريق المعيار الخاص بحقل التاريخ DocDt وكان المعيار هو

<Between [Forms]![Arg]![a] And [Forms]![Arg]!

حيث A هو اسم مربع النص الذي ستكتب فيه تاريخ البداية و B هو اسم مربع النص الذي ستكتب فيه تاريخ الالنهاية داخل النموذج

وهذا الاستعلام لعرض الحركات حركة حركة ولا تجميع فيه.

***الان نريد ضم الشتات ولم الشمل الرصيد الافتتاحي يليه سجلات الحركة عليك باستعلام التوحيد الأقوى من الحديد :lol:

اسمه all يجمع بين الاستعلامين op03 و Tr

*** لا يتبقى لنا سوى تحديد الرصيد التراكمي وسيكون ذلك في حقل محسوب داخل استعلامنا النهائي الذي هو Accbl

اسم الحقل المحسوب هو Accum صيخته هي التالية

Accum: [db]-[cr]+nz(DSum("[db]","all","[docid]<" & [docid])-DSum("[cr]","all","[docid]<" & [docid]),0)

يحتاج لبعض الشرح ؟؟؟

حسناً..

ماهو الرصيد التراكمي ؟

اليس هو صافي الحركة الحالية(مدين-دائن) مضاف اليها مجموع الحركات السابقة (مدين-دائن) باشارتها طبعاً

هذا ماتكونت منه الصيغة السابقة

 [db]-[cr]

هي صافي او ناتج طرح الحركة الحالية المدينة - الدائنة

DSum("[db]","all","[docid]<" & [docid])

هنا مجموع الحقل المدين Db من الاستعلام ِall بدالة التجميع الشرطي Dsum والشرط ان يكون رقم المستند(الحقل Docid) في الاستعلام all اقل منه في استعلامنا الحالي ومن هنا نشأت أهمية اختيار نوع الترقيم التلقائي لهذا الحقل عند تصميم الجدول

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

DSum("[cr]","all","[docid]<" & [docid])

ولا يخفى عليكم دور الدالة Nz في حذف القيم الفارغة والمساعدة في اظهار النتائج سليمةً

الان اتضح محتوى الحقل المحسوب المدين الحالي-الدائن الحالي+اجمالي المدين السابق - اجمالي الدائن السابق

مع حذف اي قيم فارغة.

والنتيجة النهائية ان يظهر الرصيد التراكمي المدين باشارة موجبة وان كان دائنا ظهر باشارة سالبة (بين قوسين)

ب - التقرير :

بنفس الاسم الذي يحمله الاستعلام : AccBl مصدره هو الاستعلام Accbl وتميز بشيئين عن الاستعلام السابق

*** مربع النص الاصفر الموجود بأعلى التقرير فيه شوية شغل ومعادلات :D

*** الرصيد التراكمي معروض ببساطة شديدة عبارة عن ناتج طرح المدين - الدائن مع تشغيل خاصية التجميع لمربع النص

بمعنى Running Sum = Yes

2 - رصيد افقي (ميزان مراجعة)

أ - الاستعلام :

إسمه Trial_b03 منتديات الفريق العربي للبرمجة بنيناه هكذا

*** استعلام تحديد اسمه Trial_b01 مبني عل الجدول Data وظيقته الفصل بين محصلة الحركات(المدينة و الدائنة) قبل فترة البحث عن تلك الواقعة في نطاق الفترة

رصيد البداية :

op: IIf([docdt]<forms!arg!a,[db]-[cr],0)

دالة الشرط IIF تختبر التاريخ بالحقل Docid فان كان سابقا للتاريخ الموجود بمربع النص A بالنموذج Arg ارجعت ناتج طرح الحقل Db - الحقل Cr والا ارجعت 0

كل ذلك بمعيار لتحديد رقم الحساب تحت الحقل Acc ويتميز هذا المعيار بانك لو تركت مربع اسم الحساب بالنموذج فارغاً ظهرت لك كل الحسابات والمعيار هو الاتي

Like "*" & [forms]![arg]![acc] & "*"

ومعيار اخر تحت حقل التاريخ Docid لمنع ظهور اي تاريخ يجاوز فترة النهاية الموجودة بالمربع b في النموذج Arg

والمعيار هو

<=[forms]![arg]!

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

*** اخيرا استعلامنا النهائي Trial_b03 مبني عن السابق وظيفته فصل المدين عن الدائن في رصيد البداية والحركة

وكذلك حساب الرصيد النهائي بنفس فكرة الدالة iif

ب - التقرير :

إسمه TrialB مبني على الاستعلام Trial_b03 يتميز بالاتي :

*** الحركات في المربع الاصفر :P

*** التجميع في نهاية التقرير

3 - رصيد رأسي (كشف حساب)

أ - الاستعلام :

إسمه Virticl02 مبني على استعلام التوحيد Virtical01 الذي يجمع بين اربعة استعلامات

*** op03 تكلمنا عنه سابقا

*** Tr تكلمنا عنه ايضأ

*** Lines مجموعة من الخطوط بشكل "======"

*** استعلام end03 وهو لعرض الرصيد في نهاية الكشف وقد نشأ من تتابع الاسنعلامين end01 و end02 بنفس فكرة تتابع الاستعلاماتOp01 -op02- op 03

ب - التقرير :

اسمه VirticalRp مبني على الاستعلام Tr يتميز التقرير ببساطته ولثد تم حساب الارصدة في البداية والختام بصيغ داخل التقرير نفسه بالدوال iif وDsum المرتبطة بالاستعلام OP03

....................................

في انتظار استفساراتكم ودعواتكم

 

تم تعديل بواسطه طاهر الوليدي
  • Like 1
  • 6 years later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information