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

ما الخطا في كود الحذف هذا ؟؟؟ Executereader

بدأه incomplete في 17 مايو 2009 · 4 رد · 894 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكــم ورحمـة الله وبركاتــه ،،

عندي سوال اريد اجابه طارئه

لي 3 ساعات اتصارع مع هذا الكود من غير فائده==>>with no use

:wacko:

وما دريت كيف اصحح الخطا حيث رساله الخطأ هي

(There is already an open datareader with the associated command

which must be closed(

والكود كا التالي

=====================

Imports System.Data.SqlClient

Public Class Form1

Dim mysqlstr As String = "Data Source=(local);Initial Catalog=cfd;Integrated Security=SSPI"

Dim mysqlconnection As New SqlConnection(mysqlstr)

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Try

If (mysqlconnection.State And ConnectionState.Open) <> 0 Then

mysqlconnection.Close()

End If

mysqlconnection.Open()

Dim cmmd1 As New SqlCommand

cmmd1.Connection = mysqlconnection

Dim cmmd2 As New SqlCommand

cmmd2.Connection = mysqlconnection

Dim cmmd3 As New SqlCommand

cmmd3.Connection = mysqlconnection

Dim cmmd4 As New SqlCommand

cmmd4.Connection = mysqlconnection

Dim cmmd5 As New SqlCommand

cmmd5.Connection = mysqlconnection

Dim cmmd6 As New SqlCommand

cmmd6.Connection = mysqlconnection

Dim cmmd7 As New SqlCommand

cmmd7.Connection = mysqlconnection

Dim cmmd As New SqlCommand

cmmd.Connection = mysqlconnection

cmmd.CommandText = "select book_id from lodgers where cast(check_out_date as datetime) < '" & Today.Date & "'"

Dim drd As SqlDataReader = cmmd.ExecuteReader

While drd.Read

cmmd1.CommandText = " select booked_single_rooms from lodgers where book_id=" & CInt(drd.Item("book_id")) & ""

Dim b_s_r As Integer

b_s_r = cmmd1.ExecuteScalar()

Dim b_t_r As Integer

cmmd2.CommandText = " select booked_twin_rooms from lodgers where book_id=" & CInt(drd.Item("book_id")) & ""

b_t_r = cmmd2.ExecuteScalar()

Dim hot_n As String

cmmd3.CommandText = "select hotel_name from lodgers where book_id=" & CInt(drd.Item("book_id")) & ""

hot_n = cmmd3.ExecuteScalar()

Dim city_n As String

cmmd4.CommandText = "select city_name from lodgers where book_id=" & CInt(drd.Item("book_id")) & ""

city_n = cmmd4.ExecuteScalar()

cmmd5.CommandText = "update hotels set avail_single_rooms=avail_single_rooms+" & Trim(b_s_r) & ",avail_twin_rooms=avail_twin_rooms+" & Trim(b_t_r) & " where hotel_name='" & hot_n & "' and city_name='" & city_n & "'"

cmmd5.ExecuteNonQuery()

cmmd6.CommandText = "delete from lodgers where book_id=" & CInt(drd.Item("book_id")) & ""

cmmd6.ExecuteNonQuery()

cmmd7.CommandText = "update reservation set book_id=0 where book_id=" & CInt(drd.Item("book_id")) & ""

cmmd7.ExecuteNonQuery()

MsgBox("success")

End While

drd.Close()

mysqlconnection.Close()

Catch ex As Exception

MsgBox(ex.Message)

End Try

=====================

حيث المطلوب هنا يحذف كل النزلاء بفندق قبل تاريخ االيوم

اتمنى الاجابه

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

تم تعديل هذه المشاركة بواسطة incomplete في 17 مايو 2009 في 17:20

#2

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

While drd.Read
.
.
.
End While

يجب إغلاق الكائن drd قبل التنفيذ (على حد علمى فأنا لا أستخدم الداتا ريدر :wacko: )

لماذا لا تملأ DataTable وتقوم بعمل الحلقة التكرارية على السجلات التى بداخله بدلا من قارئ البيانات لتلافى هذه المشكلة ؟؟

- أو -

قم بعمل StoredProcedure يستقبل منك التاريخ ويقوم بعمل الشئ الذى تريد ؟؟

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#3

السلام عليكــم ورحمـة الله وبركاتــه ،،

شكراً لك اخي الكريم

ولكن انا لم يسبق لي التاعمل معDatatableإلا عند املاءdatagrid

وانا قد طبقت الداتا ريدر في اكثر من كود

وكان يطبق تمااااااااااااااام

لكن هنا لا اعلم

وكما لاحظت فانا افقلت الريدر

اذا هناك رابط او كود صغير لكي اتعلم كيف اتعامل مع الداتا تيبل بالحذف والاضافه اكون شاكر لك

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

#4
اقتباس
وكما لاحظت فانا افقلت الريدر

أنت تغلق الداتا ريدر فى نهاية الإجراء لكنك تستدعى ExecuteScalar و ExecuteNonQuery و الداتا ريدر مفتوح

System.Data.DataTable

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

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