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

كيفية استرجاع اكثر من قيمة جمع بستخدام ExecuteScalar

مغلقمُجاب
بدأه Develooper في 13 مارس 2013 · 6 رد · 1,059 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم 

يوجد جملة SQL تقوم بعمل جمع لاكثر من حقل واريد ان اقوم بمعرفة الجمع لكل حقل 

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

 

            Using mySqlConnection As New SqlConnection(ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)
                mySqlConnection.Open()
                Dim sql As String
                Dim SumVal As Integer
                sql = " SELECT  SUM(Column1) AS Column1, SUM(Column2) AS Column2, FROM  table1 WHERE (id=1) "
                Dim mySqlCommand As New SqlCommand(sql, mySqlConnection)
                If Not IsDBNull(mySqlCommand.ExecuteScalar) Then
                    SumVal = mySqlCommand.ExecuteScalar()
                    MsgBox(SumVal)
                End If
            End Using

 

وقد بحثت لاقت هذه الجملة ولكن لم تحل المشكلة 

 

con = new MySqlConnection("server=localhost;database=Customers;uid=root;pwd=******");
try {
    con.Open();
    cmd = new MySqlCommand("SELECT concat(name,'|',lastname) FROM customer WHERE ID_customer= ?Parname;", con);
    cmd.Parameters.Add("?Parname", MySqlDbType.Float).Value = customer_card; // Are you sure that the ID is float? That's the first time I see anything like that!
    var tokens = ((String)cmd.ExecuteScalar()).Split('|');
    var firstName = tokens[0];
    var lastName = tokens[1];
    Console.Writeln("First={0}, Last={1}", firstName, lastName);
} finally {
    con.Close();
}

تم تعديل هذه المشاركة بواسطة Develooper في 13 مارس 2013 في 12:46

لك الحمدُ ،،، على - مَا مضى . .

وَ لكَ الحمدُ ،،، على مَا أنا ، به الآن . .
وَ لكَ الحمدُ ،،، على - مَا سيأتي . .
وَ لكَ الحمدُ ،،، على كُلِ حال . .
الحمد لله على نعمة الاسلام و كفى بها نعمة

#2
ExecuteScalar ترجع بقيمة واحده فقط

استخدام بدلا منها ExecuteNonQuery

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#3

السلام عليكم 

 ولكن هل ExecuteNonQuery سوف ترجع بجمع كل حقل وعرض النتيجة لى استخدمها فى غرض اخر 

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

لكن حبت انى اقوم بعمل  ExecuteScalar لاكثر من حقل فى جملة واحده اتضح انها ترجع بقيمة واحده 

 

شكرا اخى محمد على الرد والتوضيح 

لك الحمدُ ،،، على - مَا مضى . .

وَ لكَ الحمدُ ،،، على مَا أنا ، به الآن . .
وَ لكَ الحمدُ ،،، على - مَا سيأتي . .
وَ لكَ الحمدُ ،،، على كُلِ حال . .
الحمد لله على نعمة الاسلام و كفى بها نعمة

#4

من المفترض ان استرجاع العمود الاول والثاني والثالث وهكذا يكون في DataGridview مثلا لكني اري خلل في جملة الــ Select من الاساس حيث المفروض لايوجد , قبل From

وطالما استخدمت Sum في جملة الــ Select اكيد ستحتوي الجملة علي Group by وليس بالشكل المكتوب اعلاه

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#5

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

وانا بنفذ هذه الجملة على مجموع قيمة حقل واحد تمام بدون اى مشاكل 

السوال هنا هل يمكن عمل ذالك من خلال جملة الاستعلام والعودة باكثر من قمية حقل مثلا مجموع واحد و اتنين وثالثة ولو موجود يمكن عمل المثال للتوضيح اكثر 

وشكرا جزيلا لك على الرد والمتابعة

 

 Using mySqlConnection As New SqlConnection(ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)
                mySqlConnection.Open()
                Dim sql As String
                Dim SumVal As Integer
                sql = " SELECT  SUM(Column1) AS Column1, SUM(Column2) AS Column2 FROM  table1 WHERE (id=1) "
                Dim mySqlCommand As New SqlCommand(sql, mySqlConnection)
                If Not IsDBNull(mySqlCommand.ExecuteScalar) Then
                    SumVal = mySqlCommand.ExecuteScalar()
                    MsgBox(SumVal)
                End If
            End Using

لك الحمدُ ،،، على - مَا مضى . .

وَ لكَ الحمدُ ،،، على مَا أنا ، به الآن . .
وَ لكَ الحمدُ ،،، على - مَا سيأتي . .
وَ لكَ الحمدُ ،،، على كُلِ حال . .
الحمد لله على نعمة الاسلام و كفى بها نعمة

#6 أفضل إجابة

هذا مثال 

Imports System.Data
Imports System.Data.SqlClient
Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Dim dt As New DataTable
        Dim cmd As New SqlCommand("SELECT     SUM(Column1) AS Column1, SUM(Column2) AS Column2, SUM(Column3) AS Column3, SUM(Column4) AS Column4 FROM dbo.SumTable")

        cmd.Connection = Constr.Connection
        cmd.CommandType = CommandType.Text

        Constr.Connection.Open()
        Dim dr As SqlDataReader
        dr = cmd.ExecuteReader
        dt.Load(dr)


        GridView1.DataSource = dt
        GridView1.DataBind()
        Constr.Connection.Close()
    End Sub
End Class

 

وهذه هي نتيجة الاستعلام
 
post-46243-0-74102900-1363237480_thumb.j

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#7

شكرا اخى محمد فؤاد على المثال والتوضيح جزاك الله خير 

لك الحمدُ ،،، على - مَا مضى . .

وَ لكَ الحمدُ ،،، على مَا أنا ، به الآن . .
وَ لكَ الحمدُ ،،، على - مَا سيأتي . .
وَ لكَ الحمدُ ،،، على كُلِ حال . .
الحمد لله على نعمة الاسلام و كفى بها نعمة

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…