أخي الكريم مشكور لاهتمامك ولكن المطلوب جمع كل صنف علي حده في الجدولين انظر الي الملف المرفق (Sum) هو النتيجة المراد الوصول اليها
لاحظ أخي عند فتح البرنامج تظهر جميع الأصناف الموجودة في جدول T في الفليكس جريد وعند الضغط علي زر مجموع يجمع كل صنف علي حده مع عدم تكرار الصنف والمطلوب تطبيق ذلك أيضا علي جدول T1 واظهار النواتج في الفليكس جريد (انظر المرفق Sum فهو يوضح النتيجة المطلوبة ) ولك مني جزيل الشكر
عدل كود الزر ليصبح كما يلي (التعديل بالأساس على جملة SQL):
كود :
Private Sub Command1_Click()
SQLs = "SELECT ItemNames.ItemName, " _
& "IIf(IsNull(VirtualT.TSum), 0, VirtualT.TSum) AS TSum, " _
& "IIf(IsNull(VirtualT1.T1Sum), 0, VirtualT1.T1Sum) AS T1Sum " _
& "FROM ((SELECT DISTINCT T.ItemName FROM T UNION SELECT DISTINCT T1.ItemName FROM T1) AS ItemNames " _
& "LEFT OUTER JOIN (SELECT T.ItemName, SUM(T.ITVNo) AS TSum FROM T GROUP BY T.ItemName) AS VirtualT " _
& "ON VirtualT.ItemName = ItemNames.ItemName) " _
& "LEFT OUTER JOIN (SELECT T1.ItemName, SUM(T1.ITVNo) AS T1Sum FROM T1 GROUP BY T1.ItemName) AS VirtualT1 " _
& "ON VirtualT1.ItemName = ItemNames.ItemName " _
& "ORDER BY ItemNames.ItemName"
If Con.State = 1 Then Con.Close
Con.Open "Provider=Microsoft.Ace.OLEDB.12.0; Data Source=" & App.Path & "\dbo.accdb"
If RSS.State = 1 Then RSS.Close
RSS.Open SQLs, Con, adOpenKeyset, adLockOptimistic, adCmdText
Set MSHFlexGrid1.DataSource = RSS
End Sub
* لاحظ أننا استعملنا جداول وهمية: ItemNames و VirtualT و VirtualT1 (مؤقتة في الذاكرة ضمن جملة الـ SQL) لتجميع البيانات بهذا الشكل.