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

ٍؤال: استخدام اكثر من datareader مع بعض

مغلق
بدأه Romantic_touch في 20 فبراير 2006 · 4 رد · 787 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

احتاج بعض الأحيان لأن اجري جملتي transact فا اضطر لاستخدام datareader وسط بعض

يعني استخدام datareader وقرأة القيمة التي يعطيني هيه وانشاء transact اخر لأحصل على النتيجة المطلوبة

المشكلة انه يعطيني خطأ بأنه لايمكن استخدام datareader اخر بينما الأول لازال مفتوح

فما الحل؟؟؟؟؟؟؟؟

مثال

dim conn as new oledb.oledbconnection(connstr)
sql = "select Status from tbl_1"
dim dr as oledb.oledbdatareader
dim cmd as new oledb.oledbcommand(sql,conn)
dr = cmd.executereade()
while dr.read
 if dr(0) = True then
   sql = "select c_name from tbl_2 "
   dim cmd as new oledbcommand (sql,conn)
   dr = cmd.executereader()
   else
    response.write (dr(0).tostring)
   end if
wend

ملاحظة: كتبت الكود من راسي فلا تعليق على الأخطا الاملائية والمهم فقط الفكرة

وهذه تحدث معي كثير في حالة الاستدعاء من النوع recursive داخل بعضه بالذات في انشاء tree

<span style='color:green'>سؤل ابن عباس عن علمه كيف جمعه فقال :( أوتيت لسانا سؤولا وقلبا عقولا)</span>

#2

-9

جرب استخدام كائنى اتصال يعنى لكل كائن امر كائن اتصال خاص بيه

بالتوفيق

VB.NET and C# Comparison

http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

002.gif

=-=-=-=-=-=-=
ذو العلم يشقى فى النعيم بعلمه .:. واخو الجهالة فى الشقاوة ينعم
=-=-=-=-=-=-=
يا من بدنياه اشتغل . قد غره طول الأمل . فالموت يأتى بغتة . والقبر صندوق العمل
=-=-=-=-=-=-=
ان لم تستطع ان تجد ما تفعله فافعل ما لم تسطع ان تجده

screen_shot_2011-05-19_at_12.44.49_pm.pn

#3

يعني تقصد ان انشئ كائن اتصال عند كل استدعاء؟؟

نعم هذا حل انا مجربه بس ماهو عملي

لان لكل قاعدة بيانات عدد محدود من الاتصالات ففي حالة recursive اكيد راح يطلع لي خطأ خصوص في حالة الparent and child

يعني فرضا انا لدي فرضا شجرة العائلة فكل اب مرتبط بأبناء وكل ابن مرتبط بابن ففي هذه الحالة يلزم مايسمى ب recursive

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

يعني تحتاج الى استدعاء نفس الدالة بعدد مرات الابناء يعني شغلانه :)

كنت استخدم الercord set في ado ومافيها اي مشكلة بس الحين مازبطت معاي!!

<span style='color:green'>سؤل ابن عباس عن علمه كيف جمعه فقال :( أوتيت لسانا سؤولا وقلبا عقولا)</span>

#4

خزن القيم التي يأتي بها datareader الأول داخل مصفوفة ثم أغلقه و أحضر القيم من الآخر ....

مثال

dim conn as new oledb.oledbconnection(connstr)
sql = "select Status from tbl_1"
dim valuesArry(30) as string 
dim counter1,counter2 as integer 
dim dr as oledb.oledbdatareader
dim cmd as new oledb.oledbcommand(sql,conn)
dr = cmd.executereade()
//وضع القيم في المصفوفة 
while dr.read loop 
      valuesArray(counter1)=dr(0) 
     counter1+=1 
end while 
 dr.close() 

while counter2<counter1 loop 
     valuesArry(counter2) = True then
    sql = "select c_name from tbl_2 "
     dim cmd as new oledbcommand (sql,conn)
     dr = cmd.executereader()
  else
   response.write (dr(0).tostring)
  end if
end while
#5

اعتقد ان الطريقة جداااااااااااااااا صعبة

يعني يبغى لك مصفوفات بعدد المستويات !!! او بمعنى اخر بعدد المرات اللي راح تسوي فيها لووب على الداتا ريدر

يعني هة حل بس اعتقد انه مش عملي!!

<span style='color:green'>سؤل ابن عباس عن علمه كيف جمعه فقال :( أوتيت لسانا سؤولا وقلبا عقولا)</span>

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

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