تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
أريد تحويل مشروعي من اكسس الى sql
#16
إقتباس :السلام عليكم ورحمة الله وبركاته

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

بارك الله فيك

لكن هناك نقطه شيبتني لا أعلم سببها

كل ما اقوم بعمل قراءه للبيانات من القاعده يعطيني هذا الخطأ


كود :
كود :
There is already an open DataReader associated with this Command which must be closed first.

وهذا هو الكود المستخدم 


كود :
كود :
      Dim cmd As New SqlCommand("select * from " & table_name & " where " & DB1 & " = '" & txt1 & "'", cn)
       Dim dr As SqlDataReader = cmd.ExecuteReader
       dr.Read()

على الرغم انه لايوجد DataReader مفتوح قبل هذا الكود

قمت باغلاق الاتصال بالقاعده وفتحه من جديد لكن نفس المشكله

في حين ان هذا هو نفس الكود المستخدم مع قاعدة الاكسيس قبل تحويلها بعد تغيير الفئة من oledb الى sqlcommand

ما الحل

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

الخطأ منطقي في كل مره تفتح اتصال يجب اغلاقه بعد تنفيذ المهمة سواء كان DataReader sqlcommand او اي عملية تستخدم للقراءة والتنفيذ.

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

ثم تاتي بعد ذلك لتنفيذ امر ما في الوقت نفسه الذي طبقت فيه الكود السابق او اي امر مشابه كما سبق
1- فتح الاتصال بالقاعده > سيخرج خطأ هنا والسبب لم تغلق الاتصال بعد تنفيذ الاوامر السابقه انت هنا تطلب فتح الاتصال وهو مفتوح اصلا سيتوقف التطبيق هنا ولن يواصل تنفيذ بقيت الاكواد.
2- ثم القراءة او تنفيذ الاوامر > لن يتم تنفيذه بسبب الخطأ السابق.

الكود الصحيح لتجاوز هذه المشكلة في جميع اوامر تطبيقك ( الفتح ، القراءة ، التنفيذ )

0- التحقق من الاتصال إذا كان مفتوح قم باغلاقه
1- وعند التنفيذ افتح الاتصال بالقاعدة
2- ثم القراءة او تنفيذ الاوامر
3- الان اغلق الاتصال


^ هذه الطريقة الصحيحه  (للأتصال والقراءة او التنفيذ ) Shy

وبالتالي حل مشكلتك كما يلي


إذا كان الاتصال مفتوح ' If cn.State = ConnectionState.Open Then

                قم باغلاقه'     cn.Close()
                End If

Dim cmd As New SqlCommand("select * from " & table_name & " where " & DB1 & " = '" & txt1 & "'", cn
 افتح الاتصال' cn.Open()
       Dim dr As SqlDataReader = cmd.ExecuteReader
       dr.Read()


اغلق الاتصال cn.Close
  اغلق القراءة dr.Close


والان تم الانتهاء من المشكلة بفضل الله
وفقك الله

Heart
الرد }}}
تم الشكر بواسطة:


الردود في هذا الموضوع
RE: أريد تحويل مشروعي من اكسس الى sql - بواسطة alktab - 02-01-15, 08:41 AM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  مساعدة في تحويل الكود من فيجوال بسيك 6 الى فيجوال دوت نت سيد أحمد 5 820 23-03-25, 10:54 PM
آخر رد: سيد أحمد
  ادخال درجات الطلاب لقاعدة بيانات اكسس .. مساعدة Tajaldeen 9 2,750 07-02-25, 07:59 PM
آخر رد: الورد2
  كيف يمكن تحويل ملف تنفيذى الى فيجوال بيسك 2010 walkady 2 782 07-02-25, 07:57 PM
آخر رد: الورد2
  طريقه تحويل اى قاعده بيانات الى ملف dll فى المشروع خالد كامل1 1 636 31-01-25, 10:21 PM
آخر رد: Kamil
  تحويل معادلة اكسل أحمد فتح الرحمن 1 478 29-01-25, 11:09 PM
آخر رد: أحمد فتح الرحمن
  اريد كود يحذف جميع سجلات جدول بقاعدة بيانات اكسس دفعه واحده khalidalwdi 2 635 18-11-24, 01:02 AM
آخر رد: rdxdz
  اريد جلب عدد محدد من السجلات من قاعدة بيانات اكسس الى الداتا قراد فيو يوجد مثال khalidalwdi 2 667 12-11-24, 12:19 PM
آخر رد: khalidalwdi
  [VB.NET] تحويل لغة الأرقام في فيجوال ستوديو AboBattal 2 389 12-11-24, 08:11 AM
آخر رد: أبو خالد الشكري
  لدي كود للإضافة أريد كود للتعديل وكود للحذف F.H.M 4 356 09-11-24, 09:50 AM
آخر رد: F.H.M
  [VB.NET] تحويل من hexadecimal الى ASCII aminesori 2 371 07-11-24, 11:18 PM
آخر رد: aminesori

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم