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

مشكلة اثناء استرجاع قيمة من عملية البحث

بدأه anas_elwakkad في 13 فبراير 2013 · 9 رد · 591 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

توجد مشكله ولم اجد لها حل ............. عند البحث يتم بشكل صحيح وعند استرجاع القيمة من البحث تظهر الرساله التاليه :

IndexOutofRangeExpection was enhalded

الكود المستخدم :

  cn.Open()
        cmd.Connection = cn
        cmd.Parameters.AddWithValue("@emanpwr", Label1.Text)
        cmd.CommandType = CommandType.Text
        cmd.CommandText = "select sum(bpaid) from bills where emanpwr =  '" & Label1.Text & "'"
        sdr = cmd1.ExecuteReader()
        sdr.Read()
      
        e = sdr("sum(bpaid)")
        sda1.Close()
        cn.Close()

 

 

المشكلة فى المخزن e  حيث ان القيمة المفروض ان تكون money

 

 

post-72070-0-04219100-1360745553_thumb.j

#2

ايه يا جماعة هيا المشكلة صعبه اوى كدا ولا ايه ؟

#3

السلام عليكم ...

  1. يجب أن يكون الاستعلام كاالتالي :
    SELECT ISNULL(SUM(myCol) , 0)  AS TheSum FROM MyTable

     و في الكود :

    e = sdr("TheSum")

     

تم تعديل هذه المشاركة بواسطة houssam11350_11350 في 13 فبراير 2013 في 16:15

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#4

وعليكم السلام والرحمه ......... والله يا اخى انت ما قصرت
لكن للاسف نفس المشكلة ........ وكمان الجدول اللى هستعدى منه البيانات موجوده فيه بيانات فعلاً
وادى نفس الرساله الخطأpost-72070-0-98103800-1360762327_thumb.j
 
 
 
اخى الموضوع باختصار انتى عملت داتا جريد ... واستعديت البيانات بشكل سليم لكن المشكلة انى عاوز مجموع حقل معين يظهر فى الجريد .,,,فحبيت ابرمجه لوحده فى كود خاص وتظهر النتيجه فى تكست ودى صوره من الجريد فيو بالنتائج

post-72070-0-13377900-1360762566_thumb.j

 

 

 

ودا كود الجريد فيو ........ وانا عاوز اطلع نتبيجه الجمع الخاصه بالحقل bpaid  فى textbox3

 

 

كود البرمجه له

 Dim cmd1 As New SqlCommand
        Dim sda1 As SqlDataReader
        Try
            cn.Open()
            cmd1.Connection = cn
            cmd1.Parameters.AddWithValue("@pid", servantIDText.Text)
            cmd1.CommandType = CommandType.Text
            cmd1.CommandText = "select * from emanpwr where pid = @pid"
            sda1 = cmd1.ExecuteReader()
            sda1.Read()
            Label2.Text = sda1("pname")
            Label1.Text = sda1("emanpwr")
            sda1.Close()
            cn.Close()
        Catch ex As Exception
            MsgBox("Wrong ID Please Try Again", MsgBoxStyle.Critical, "Error")
            cn.Close()
            cmd1.Parameters.Clear()
            servantIDText.Text = ""
            Label2.Text = ""
            Exit Sub
        End Try



        'Try
        Dim h As String
        h = "select bills.invoiceno as 'Invoice No.',customer.cnid as 'Customer ID',customer.cname as 'Customer Name',bills.bpaid as 'Amount Paid' from customer inner join bills on customer.cuid = bills.cuid where bills.emanpwr = '" & Label1.Text & "'"
        Dim sda As New SqlDataAdapter(h, cn)
        Dim da As New DataSet
        cn.Open()
        sda.Fill(da, "bills")
        cn.Close()
        DataGridView1.DataSource = da
        DataGridView1.DataMember = "bills"
        DataGridView1.Update()



        Dim cmd As New SqlCommand
        Dim sdr As SqlDataReader
        Dim ds As New DataSet
        Dim e As Double


        cn.Open()
        cmd.Connection = cn
        cmd.Parameters.AddWithValue("@emanpwr", Label1.Text)
        cmd.CommandType = CommandType.Text
        cmd.CommandText = "select isnull(sum(bpaid),0) as Total from bills where emanpwr =  '" & Label1.Text & "'"
        sdr = cmd1.ExecuteReader()
        sdr.Read()
        ' dt.Load(sdr)
        '  Total.Text = dt.Compute("bpaid", String.Empty).ToString
        e = sdr("Total")
        TextBox1.Text = e
        sda1.Close()
        cn.Close()

#5

السلام عليكم ...

  1. الخطأ واضح في إضافة البارمترات ..  يجب حذف السطر :
             cmd.Parameters.AddWithValue("@emanpwr", Label1.Text)

    لأنه لا يوجد بارمتر في الاستعلام اسمه @emanpwr  و هكذا بالنسبة لباقي الاستعلامات .

  2. يفضل أن يتم وضع الاستعلام , ثم البرامترات ..

     cn.Open()
            cmd.Connection = cn
            cmd.CommandType = CommandType.Text
            cmd.CommandText = "select isnull(sum(bpaid),0) as Total from bills where emanpwr=@emanpwr"
    		cmd.Parameters.AddWithValue("@emanpwr", Label1.Text)
            sdr = cmd1.ExecuteReader()
            sdr.Read()
            e = sdr("Total")
            TextBox1.Text = e
            sdr.Close()
            cn.Close()

     

  3. في الكود اعلاه قمت بإغلاق sdr  و ليس sda1  .. يجب التأكد من ذلك .

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#6

السلام عليكم

 

اخى الفاضل لقد اعدت كتابه الكود لكن نفس رساله الخطا حتى انى نسخت كود  الخاص بك ونفس المشكله

post-72070-0-15376000-1360764922_thumb.j

#7

السلام عليكم ...

  1. الكود
    sdr = cmd.ExecuteReader

     لاحظ انه يجب أن يكون cmd  و ليس cmd1  ..

  2. حاول تنظيم العمل و لا تكثر من المتحولات cmd1  و cmd  و لديك أكثر من DataReader  حيث انك تقوم بالتعامل مع الأول و تقرأ البيانات من الثاني ..

  3. عليك بقراءة المواضيع المثبتة و الدروس .

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#8

جزاك الله خير.

#9

أخي الكريم

sdr هو في النهاية مصفوفة تعبر عن أسطر أي لها حجم معين من عدد الأسطر

والوصول إلى أي منها إما من خلال رقم الخانة Index  أو من خلال مفتاح "اسم من النوع String"

 

والخطأ لديك سببه أن لا يجد خانة مفتاحها المجموع أو كلمة Total

 

من هنا يجب أن تتأكد أن طلبك لأي سطر يجب أن يكون متوفرا

ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها

كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور

الدورة التطبيقية لتعليم التصميم بالإليستريتور

#10

الله يعطيك العافيه والله ماقصرت

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