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

هل يمكن عمل أكثر من Data Reader على نفس ال Connection

بدأه omar ali في 2 مايو 2010 · 3 رد · 972 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

فانا يا اخوانى اقوم بأنشاء فورمة تبنى الادوات الخاصة بها بقرأتها من الداتا بيز اى أنشأها فى الرن تيم

فأحتاج لفتح اتنين داتا ريدر داخل بعض كلاتى

Public cn As New SqlConnection("Data Source=ESA;Initial Catalog=Ek;Persist Security Info=True;MultipleActiveResultSets=True;User ID=sa;Password=sss;")
 Public cmd As New SqlCommand
    Public cmdCount As New SqlCommand
    Public dr As SqlDataReader
    Public drRooms As SqlDataReader
 cmd.Connection = cn
        cmdCount.Connection = cn
        cmd.CommandText = "Select * from Test Order By FloorNo"
        If cn.State = ConnectionState.Closed Then cn.Open()
        dr = cmd.ExecuteReader
  While dr.Read = True
            cmdCount.CommandText = "Select Count(TestID)as Rooms,FloorNO  From Test where FloorNo=" + dr("FloorNo").ToString + "Group By FloorNO"
            drRooms = cmdCount.ExecuteReader
            While drRooms.Read = True
End While

يظهر لى خطأ هنا

There is already an open DataReader associated with this Command which must be closed first

علما بأنى استخدم سيكوال 2008 وفيجوال استديو 2010

وأيضا أستخدم خاصية Multiple Active Result Sets

فبالله عليكم أرجو أفادتى

ولكم جزيل الشكر

#2

هل من مجيب

المساعدة يا اخوان

#3

هذا ال code يعمل معي بشكل جيد. لقد بدلت اسامي الحقل لتطابق الجدول لدي. اعتقد انك نسيت ان تضع End While لل Reader الثانية.

جرب

cmd.Connection = cn
    cmdCount.Connection = cn
    cmd.CommandText = "Select * from customer"
    If cn.State = ConnectionState.Closed Then cn.Open()
    dr = cmd.ExecuteReader
    While dr.Read
        cmdCount.CommandText = "select * from login where id=" & dr(0)
        drRooms = cmdCount.ExecuteReader
        While drRooms.Read = True
                Debug.Print(drRooms(0))
                Debug.Print(dr(0))
        End While
    End While
#4

شكرا جزيلا يا أخى

وتقريبا المشكلة لانى يجب ان اغلق الريدر الثانى بداخل الريدر الاول

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