منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[سؤال] هل يمكن عمل مجاميع رئيسية وفرعية داخل داتا جريد فيو - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [سؤال] هل يمكن عمل مجاميع رئيسية وفرعية داخل داتا جريد فيو (/showthread.php?tid=23776)



هل يمكن عمل مجاميع رئيسية وفرعية داخل داتا جريد فيو - السيد الجوهري - 10-02-18

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


RE: هل يمكن عمل مجاميع رئيسية وفرعية داخل داتا جريد فيو - محمود صالح - 10-02-18

انت تقصد قائمة الدخل والميزانية


RE: هل يمكن عمل مجاميع رئيسية وفرعية داخل داتا جريد فيو - السيد الجوهري - 10-02-18

نعم  وميزان المراجعة


RE: هل يمكن عمل مجاميع رئيسية وفرعية داخل داتا جريد فيو - nooralcown - 11-02-18

اذا حدا بيربمجهم ويعرضهم بيكون جزاه الله خيرا


RE: هل يمكن عمل مجاميع رئيسية وفرعية داخل داتا جريد فيو - السيد الجوهري - 11-02-18

لدي طريقة من خلال ستورد بروسيدجر
لكن خطا فى الارصدة الختامية


[attachment=17113]


RE: هل يمكن عمل مجاميع رئيسية وفرعية داخل داتا جريد فيو - محمود صالح - 11-02-18

سلام عليكم
بافتراض عنك جدولين
الاول : اسمه ACCOOUNT لاسماء الحسابات (البنوك الخزينة عملاء الخ ..............)
الثاني : اسمه DATA وهو لاثبات القيود اليومية (او العمليات على الحساب)
PHP كود :
CREATE FUNCTION OK()
RETURNS TABLE
AS
RETURN (
 
      WITH DT AS(
     
     SELECT 
             ACCOUNT
.Name --  اسم الحساب من جدول ACCOUNT
             ACCOUNT
.ac_type --نوع الحساب(مدين او دائن)
             
Sum(DATA.M_T) AS M --جمع قيمة المدين من جدول DATA
             Sum
(DATA.D_T) AS D   --جمع قيمة الدائن من جدول DATA
         FROM ACCOUNT
DATA_T   --الجدولين
         WHERE 
(((ACCOUNT.Name)=DATA.ACCOUNT_T))  --شرط وجود اسم الحساب في جدولين 
         GROUP BY ACCOUNT
.NameACCOUNT.ac_type
            
               
)
             
  SELECT 
                    DT
.NAME,
                 
DT.AC_TYPE,
             
    Sum(M) AS M,
             
    Sum(D) AS D,
                 (CASE 
WHEN DT.AC_TYPE ='مدين' THEN  Sum([M]-[D])  ELSE Sum([D]-[M]) END)AS BALANCE
              FROM DT 
              GROUP BY DT
.NAME,DT.AC_TYPE

)



SELECT FROM OK()--استدعاء FUNCTION 
طبعا ده الشكل البدائي للقوائم انت مهمتك انك تفهم الكود وبعد كده عدل زي ما انت عاوز 
يعني مثلا علشان تعمل ميزان المراجعة  او عاوز تفصل بين مجموع المدين في عمود والدائن كذالك هضيف عمدان اخرى هي شبيها بنفس الاكواد دي مش هتخرج عنها المهم انا زي ما قلتلك افهم الكود وانت هتوصل الى تريده
وطلما ليك فكرة عن البرامج المحاسبة وكتابة الكود بال SQL هتعرف الباقي
ودي صورة للنتائج عندي 
ملاحظة : طبعا المثال عملته على عجالة وارقمه للتجربة فقط قد تكون هناك ارقام غير واقعية مثلا الخزينة بالسالب وغير ذلك لكن الترصيد صحيح
[attachment=17118]


RE: هل يمكن عمل مجاميع رئيسية وفرعية داخل داتا جريد فيو - محمود صالح - 11-02-18

اسف 
مع التعديل null ب 0 في عمودين المدين والدائن في الكود لتظهر باقي الارصدة


RE: هل يمكن عمل مجاميع رئيسية وفرعية داخل داتا جريد فيو - محمود صالح - 11-02-18

معنى كلامي انك هتستخدم دالة isnull
علشان تكون هكذا
انا غيرت m و d الى Debit وCredit
PHP كود :
(CASE WHEN DT.AC_TYPE ='مدين' THEN  Sum(ISNULL([Debit],0)-ISNULL([Credit],0))  ELSE Sum(ISNULL([Credit],0)-ISNULL([Debit],0)) END)AS Balance

اما لو عاوز تعمل ميزان مراجعة بالمجاميع والارصدة مثلا هتقسم الكود السابق على اثين هكذا

PHP كود :
                (CASE WHEN DT.AC_TYPE ='مدين' THEN  Sum(ISNULL([Debit],0)-ISNULL([Credit],0)) END)AS Debit_Balance,
                 (CASE 
WHEN DT.AC_TYPE ='دائن' THEN  Sum(ISNULL([Credit],0)-ISNULL([Debit],0)) END)AS Credit_Balance 
علشان يكون الشكل الميزان كده
[attachment=17121]


RE: هل يمكن عمل مجاميع رئيسية وفرعية داخل داتا جريد فيو - السيد الجوهري - 11-02-18

هو دا الشغل

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


RE: هل يمكن عمل مجاميع رئيسية وفرعية داخل داتا جريد فيو - محمود صالح - 11-02-18

عادي زي ما انت عامل في بروسيجر
على فكرة دي function عادي ممكن تضعها في البروسيجر