الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

هل يمكن ان اعمل Select Sum في الكريستال

مغلق
بدأه Sism في 2 مايو 2006 · 3 رد · 1,454 مشاهدة · في قسم التقارير
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله والصلاة والسلام على من لا نبي بعده

السلام عليكم ورحمة الله وبركاته

اخوتي في الله عندي سؤال معقد شوية في تجميع قيم معينة

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

1 اصول

101 اصول ثابتة

101001 سيارات

وحساب السيارات يدخل في القيود الحركات المالية اريد في التقرير ان اظهر ماتم من حركات على السيارات في الأصول الثابتة ثم الأصول

بمعني اكثر للتوضيح

تم على السيارات حركات بـمليون اريد هذا المليون ان يكون في قيمة الأصول الثابتة وفي قيمة الأصول

مع العلم ان الجدول الذي به الحسابات يسمي Account والجدول الذي به الحركات يمسي GL_Det

هذه هي المشكلة

السؤال هل يمكن في الكريستال ريبورت ان اعرض الجدول Account واعمل حقل Formula يكون به جملة Select Sum يجمع فيه جميع الحركات

للحسابات التابعة لهذا الحساب

بمعني عندما يمر في سجل الأصول يقوم بعمل جملة Select Sum لهذا الحساب

علماً بأني جربت اشياء كثيرة منها Views في الأس كيو ال وخلافه ولا اريد ان اكتب هذا من داخل الكود لأن عملية استعاء البيانات ستكون بطيئة مع كبر عدد السجلات

فهل يوجد احد قام بها من قبل يرشدني للحل

جزاكم الله خيراً واسف للتطويل

السلام عليكم ورحمة الله وبركاته

#2

اللهم لا سهل إلا ما جعلته سهلا - وأنت سبحانك تجعل الحزن إن شئت سهلا

السلام عليكم ورحمة الله وبركاته

أخى الفاضل Sism

موضوعك هذا أعمل عليه يوميا على الكريستال وهو أبسط مما قادك إليه تفكيرك بكثير - بإذن الله

الفكره أن تعمل معادلة Formula على أول رقمين - من اليسار طبعا - من كود الحساب وتكون هى المستوى العلوى للتجميع - كالأصول فى مثالك -

ومعادلة أخرى على أول أربع أرقام وتكون هى المستوى الثانى للتجميع - كالأصول الثابته عندك فى المثال

أما ظهور الأسم حسب الأرقام فهم أمر يحتاج نقاش مستقل - تدخل فيه إذا فرغنا من لب الموضوع هذا - بإذن الله

ثم من قائمة Report تختار خبير المجموعات - إن صحت الترجمة هكذا - Group Expert وتعمل المجموعه العلوية على المعادله الخاصة بأول رقمين - والمجموعه الثانية على المعادلة الخاصة على أول أربع أرقام - ويمكنك حسب ظروف تقريرك أن تعمل مجموعه على مستوى الحساب بالكامل ليظهر تحته العمليات المدخله عليه (القيود يعنى بتفاصيلها)

ثم ببساطه شديده تعمل Insert Summary على حقل المبلغ فى التقرير وتضعه أمام كل مجموعه من المستويات التى اخترتها بمجرد نسخ المجموع هذا أمام كل سطر مجموع

بهذا تحصل بكل دقه على مجموع المبالغ المندرجة تحته

ولا يخفى عليك أنك تستطيع إظهار أو إخفاء المجموعات بالنقر الأيمن على هامش المجموعه حيث كلمة Group Header 1 (GH1) وتختار إما إخفائها تماما Suppress

أو أن تجعلها تظهر بالنقر المزدوج عليها كدريل داون Hide Drill Down OK وفى رأيى هى الأجمل لكى يكون تقريرك له عمق تصل إليه عندما تريد فقط وليس يعرض كل ما لديه - بدون داع فى أغلب الأحيان - من أول صفحه فيه

أرجو أن يكون كلامى مألوف لك وليس به غموض

وأنا تحت أمرك لو تحب توضيح أكثر لما قلته هنا على عجاله

والله من وراء القصد وهو يهدى السبيل

عن عبدالله بن عمر رضي الله عنهما أن رسول الله صلى الله عليه وسلم قال :

( أحب الناس إلى الله أنفعهم ، وأحب الأعمال إلى الله عز وجل سرور تدخله على مسلم ، أو تكشف عنه كربة ، أو تقضي عنه دينا ، أو تطرد عنه جوعا ، ولأن أمشي مع أخي المسلم في حاجة أحب إليّ من أن اعتكف في المسجد شهرا ، ومن كف غضبه ستر الله عورته ، ومن كظم غيظا ، ولو شاء أن يمضيه أمضاه ، ملأ الله قلبه رضا يوم القيامة ، ومن مشى مع أخيه المسلم في حاجته حتى يثبتها له ، أثبت الله تعالى قدمه يوم تزل الأقدام ، وإن سوء الخلق ليفسد العمل كما يفسد الخل العسل )

رواه الطبراني في الكبير

#3

اخي الفاضل abulyaman السلام عليكم ورحمة الله وبركاته

جزاك الله كل خير على ردك الجميل واضح جداً وجزاك الله كل خير

لكن المشكلة عندي ان هذا مثال فقط بمعني ان المستويات لدي غير محددة اي يحددها المستخدم في بداية السنة المالية (يحدد عدد المستويات وعدد الخانات في كل مستوي)

لكن وفقني ربي في عمل بروسيدر من داخل اس كيو ال ومازالت اعمل عليه وسأضع فكرته هنا للإستفادة العامة

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

select ID_Account,Account_Aname,Account_Ename,

(Select Sum(Amount) from V_AmountAccount Where

Substring(Account.ID_Account,1,len(rtrim(Account.ID_Account)))=Substring(V_AmountAccount.ID_Account,1,len(rtrim(Account.ID_Account )))

from Account where....

حيث Account هو جدول الحسابات الرئيسي و V_AmountAccount هو فيو يأخذ من جدول القيود والحركات

هذه هي الفكرة العامة وترسل له بارميتر زي ما انت عايز وتقدر بالبروسيدر ده تشغله داخل الكريستال بدون اي مشكلة ونتائجه حتي الآن ممتازة والحمدلله

وجزاك الله كل خير علي الرد

#4

السلام عليكم ورحمة الله وبركاته

أخى Sism

الحمد لله أنك اهتديت لحل أولا

ثم أنا مستغرب من كلامك بعض الشئ وحاسس أن فيه شئ غامض عليا

هل تتغير فى شركتكم شجرة الحسابات Chart Of Accounts ؟

أنا لم أرى هذا من قبل - كل ما هناك أنه يتم الإضافة إليها وليس حتى الإلغاء منها - أليس كذلك؟

وكان قصدى أن تعتمد على طريقة التكويد التى رأيتها فى مثالك كأن تكون :

1 أصول

101 أصول ثابته

101001 سيارات

101002 مبانى

102 أصول متداولة

102001 بضاعة

2 خصوم

وهكذا

ومن الواضح أن هناك سكيما Schema مبنية عليها شجرة الحسابات عندك - ما دفعنى لأن أنصحك بفكرة التجميع بناءً عليها

وأطمئنك أنها فعالة 100% وأنا منفذها عندى وتطبيقها يتم فى خلال ثوانى - ولن تتأثر بما يضيفه المستخدم من أكواد أو قود على البيانات فأنت قد تحررت من هذا وبياناتك تتحدث أون لاين OnLine مع الإدخال

عموما يسعدنى أن الفكرة تكون وصلت لك وأتمنى أن حلك يكون فعال أكثر منها ولا يتطلب منك أعباء Over Head زيادة

والله من وراء القصد وهو يهدى السبيل

عن عبدالله بن عمر رضي الله عنهما أن رسول الله صلى الله عليه وسلم قال :

( أحب الناس إلى الله أنفعهم ، وأحب الأعمال إلى الله عز وجل سرور تدخله على مسلم ، أو تكشف عنه كربة ، أو تقضي عنه دينا ، أو تطرد عنه جوعا ، ولأن أمشي مع أخي المسلم في حاجة أحب إليّ من أن اعتكف في المسجد شهرا ، ومن كف غضبه ستر الله عورته ، ومن كظم غيظا ، ولو شاء أن يمضيه أمضاه ، ملأ الله قلبه رضا يوم القيامة ، ومن مشى مع أخيه المسلم في حاجته حتى يثبتها له ، أثبت الله تعالى قدمه يوم تزل الأقدام ، وإن سوء الخلق ليفسد العمل كما يفسد الخل العسل )

رواه الطبراني في الكبير

هذا الموضوع مغلق.

مواضيع مشابهة