منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : هل يمكن عمل مجاميع رئيسية وفرعية داخل داتا جريد فيو
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
هل يمكن عمل مجاميع رئيسية وفرعية داخل داتا جريد فيو
انت تقصد قائمة الدخل والميزانية
نعم  وميزان المراجعة
اذا حدا بيربمجهم ويعرضهم بيكون جزاه الله خيرا
لدي طريقة من خلال ستورد بروسيدجر
لكن خطا فى الارصدة الختامية


[attachment=17113]
سلام عليكم
بافتراض عنك جدولين
الاول : اسمه 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]
اسف 
مع التعديل null ب 0 في عمودين المدين والدائن في الكود لتظهر باقي الارصدة
معنى كلامي انك هتستخدم دالة 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]
هو دا الشغل

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