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

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم قواعد البيانات (http://vb4arb.com/vb/forumdisplay.php?fid=40)
+--- قسم : قسم أسئلة قواعد البيانات تحت بيئة الـ.NET (http://vb4arb.com/vb/forumdisplay.php?fid=41)
+--- الموضوع : تعبئة (/showthread.php?tid=9620)

الصفحات: 1 2 3


تعبئة - حريف برمجة - 21-07-13

مدري ايش اقلك عندك خطأ في اسماء الحقول او اسم الجدول

بصراحه عندي شغال مثل ما طلبته ،،


تعبئة - abuzzouz - 21-07-13

معك حق كنت قد غيرت عنوان أحد الأعمدة، والآن تمت التجربة بنجاح

جزاك الله خيراً أخي الكريم بارك الله فيك وفي أهلك وفي علمك .. والله تستاهل الترقية

تقبل تحياتي وتقديري


تعبئة - حريف برمجة - 21-07-13

abuzzouz كتب :معك حق كنت قد غيرت عنوان أحد الأعمدة، والآن تمت التجربة بنجاح

جزاك الله خيراً أخي الكريم بارك الله فيك وفي أهلك وفي علمك .. والله تستاهل الترقية

تقبل تحياتي وتقديري

وياك اخي ولك بالمثل ان شاء الله ،،

بالتوفيق واي طلب نحن في الخدمة


تعبئة - abuzzouz - 21-07-13

يسعد أوقاتك أخي حريف برمجة.. سامحني على كثرة أسئلتي في نفس الموضوع
فقد وجدت وبحسب المثال السابق أن الشخص الذي اسمه "salem" لم يظهر في الداتاغريد بالرغم أن لديه موضوعين مقدمين صحيح أنهما غير موافق عليهما إلا أنه لابد من ظهور الاسم مقابل عدد 2 في عمود "Total Subject" و 0 في عمود "Total Approval"

أشكرك على سعة صدرك
تقبل تحياتي


تعبئة - حريف برمجة - 23-07-13

العفو اخوي ،

تفضل الكود كامل

كود :
Dim cmd As New OleDbCommand("CREATE VIEW a AS SELECT MyTable.name, MyTable.Result FROM MyTable WHERE (((MyTable.Result)='yes')) GROUP BY MyTable.name, MyTable.Result", Conn)
        Conn.Open()
        cmd.ExecuteNonQuery()
        Conn.Close()
        '''''''''''''''''''''''''''''''''''''
        cmd.CommandText = "CREATE VIEW b AS SELECT MyTable.name, Count(a.Result) AS Result FROM MyTable LEFT JOIN a ON MyTable.name=a.name GROUP BY MyTable.name"
        Conn.Open()
        cmd.ExecuteNonQuery()
        Conn.Close()
        '''''''''''''''''''''''''''''''''''''
Dim dp As New OleDbDataAdapter("SELECT MyTable.name, Count(MyTable.subject) AS [Total Subject], b.Result,IIf(b.Result = 0 , 0, IIf(b.Result = 1 , 1, IIf(b.Result = 2 , 2, IIf(b.Result = 3 , 3, IIf(b.Result = 4 , 5, IIf(b.Result = 5 , 8, IIf(b.Result > 5 , b.Result, ))))))) As Points FROM MyTable INNER JOIN b ON MyTable.name = b.name GROUP BY MyTable.name, b.Result", Conn)
        Dim ds As New DataSet
        dp.Fill(ds)
        DGV_StatisticsN.DataSource = ds.Tables(0)
        '''''''''''''''''''''''''''''''''''''
        cmd.CommandText = "drop VIEW a, b"
        Conn.Open()
        cmd.ExecuteNonQuery()
        Conn.Close()



تعبئة - abuzzouz - 23-07-13

جزاك الله خير أخي حريف برمجة على تعبك معي والله خجلان منك ولا أدري ماذا أفعل،

يبدو أن معاناتي مع هذا الموضوع مستمرة فعند تطبيق الكود الجديد ظهرت النتائج غير صحيحة في العمود "Results" حيث كانت مطابقة لما ظهر في العمود "Total Subject" وبعد عدة تجارب ومحاولات اكتشفت أن المشكلة تكمن في الأسماء المكررة

فما العمل لتجاوز هذه المشكلة؟ حيث أنه عند التطبيق العملي لابد أن تتكرر الأسماء!!!

مرفق المثال كما هو..


تعبئة - abuzzouz - 26-07-13

تم تعديل المشاركة الأخيرة لوجود مستجدات يرجى الإطلاع جزاكم الله خيراً،،،،،،


تعبئة - abuzzouz - 01-08-13

أخواني الأعزاء لقد توصلت إلى الحل وإليكم الكود
كود :
Try
            Conn.Open()
            SQLStr = "CREATE VIEW r AS SELECT A.name, IIF(B.Cnt IS NULL,0,B.Cnt) AS [Total Approved] FROM (SELECT DISTINCT name FROM MyTable) A LEFT JOIN (SELECT name,COUNT(result) AS Cnt FROM MyTable WHERE result='yes' GROUP BY name) B ON A.name = B.name"
            Dim cmd1 As New OleDbCommand(SQLStr, Conn)
            cmd1.ExecuteNonQuery()
            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
            SQLStr = "SELECT MyTable.name AS [Name], Count(MyTable.subject) AS [Total Subjects], [Total Approved], IIf([Total Approved] = 0, 0, IIf([Total Approved] = 1, '" & TB_S1.Text & "', IIf([Total Approved] = 2, '" & TB_S2.Text & "', IIf([Total Approved] = 3, '" & TB_S3.Text & "', IIf([Total Approved] = 4, '" & TB_S4.Text & "', IIf([Total Approved] = 5, '" & TB_S5.Text & "', IIf([Total Approved] > 5 , [Total Approved], ))))))) As Points FROM MyTable INNER JOIN r ON MyTable.name = r.name GROUP BY MyTable.name, [Total Approved]"
            Dim dp As New OleDbDataAdapter(SQLStr, Conn)
            Dim ds As New DataSet
            dp.Fill(ds)
            DGV_Statistics.DataSource = ds.Tables(0)
            '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
            SQLStr = "drop VIEW r"
            Dim cmd2 As New OleDbCommand(SQLStr, Conn)
            cmd2.ExecuteNonQuery()
            Conn.Close()
        Catch ex As Exception
            Conn.Close()
            MsgBox(ex.Message, MsgBoxStyle.Critical, " Error")
        End Try

تقبلوا تحياتي