PDA

View Full Version : سوال: مشکل دستور delete



arhnmn
دوشنبه 22 تیر 1388, 22:50 عصر
سلام.
دستور delete چرا کار نمیکنه,میخوام سطری که کلید رمزش داده شده حذف بشه ولی نمیشه.میشه لطفا" عیبش رو بفرمائید؟



SqlConnection1.Open()
SqlCommand1 = New SqlCommand("select [kelideramz] from darjeagahi where kelideramz='" + txtkelidramz.Text + "'")
SqlCommand1.Connection = SqlConnection1
SqlCommand1.CommandType = CommandType.Text
a = SqlCommand1.ExecuteReader
If a.HasRows = False Then
eror.Visible = True
SqlConnection1.Close()
Else

SqlCommand1 = New SqlCommand("delete from darjeagahi where kelideramz='" + txtkelidramz.Text + "'")
SqlCommand1.Connection = SqlConnection1
SqlCommand1.CommandType = CommandType.Text

SqlConnection1.Close()
Response.Redirect("hazveagahi.aspx")
End If

shafi21
دوشنبه 22 تیر 1388, 23:17 عصر
خوب شما باید در قسمت دومم این دستورو execute کنید تا cammand اجرا شه

arhnmn
سه شنبه 23 تیر 1388, 00:12 صبح
من اینکار رو کردم,اینطوری شد





SqlConnection1.Open()
SqlCommand1 = New SqlCommand("select kelideramz from darjeagahi where kelideramz='" + txtkelidramz.Text + "'")
SqlCommand1.Connection = SqlConnection1
SqlCommand1.CommandType = CommandType.Text
a = SqlCommand1.ExecuteReader
If a.HasRows = False Then
eror.Visible = True
SqlConnection1.Close()
Else
SqlConnection1.Open()
SqlCommand1 = New SqlCommand(" delete ostan from darjeagahi where kelideramz='" + txtkelidramz.Text + "'")
SqlCommand1.ExecuteReader()
SqlConnection1.Close()
Response.Redirect("hazveagahi.aspx")
End If




حالا این error رو میده:



The connection was not closed. The connection's current state is open.



اگه لطف کنید جواب بدین ممنون میشم

milade
سه شنبه 23 تیر 1388, 08:22 صبح
سلام
به جای :

SqlCommand1.ExecuteReader()
بنویس :

SqlCommand1.ExecuteNonQuery()

shafi21
سه شنبه 23 تیر 1388, 10:54 صبح
دوست عزیز باید close اول روبعد از دستور end ifبنویسی ونیازی به دوباره باز و بسته کردن اون نیست یکبار کافیه

arhnmn
سه شنبه 23 تیر 1388, 15:41 عصر
آقای milade مرسی از کمکت,پیشنهادت رو انجام دادم ولی بدون اینکه runبشه این Errorرو میده



Argument not specified for parameter 'asyncResult' of 'Public Function EndExecuteNonQuery(asyncResult As System.IAsyncResult) As Integer'.




وهمینطور پیشنهاد شما دوست عزیزshafi21 هیچ تاثیری نداشت.در واقع من همچین کدی رو جای دیگه پروژم استفاده کردم که بازیابی کلید رمز توسط خود کاربر بود,هیچ مشکلی نداره و اجرا میشه ولی نمیدونم اینجا چرا اجرا نمیشه
من فکر کردم که کد قبلی ارورش از اینجا بود که تو دستور select این کانکشن باز میشد ولی هیچ کاری نمیکرد و احتمالا" ارورش برای اون بود برای همین دستور delete رو به قسمت اول if منتقل کردم که این شکل شد:



SqlConnection1.Open()
SqlCommand1 = New SqlCommand("select kelideramz from darjeagahi where kelideramz='" + txtkelidramz.Text + "'")
SqlCommand1.Connection = SqlConnection1
SqlCommand1.CommandType = CommandType.Text
a = SqlCommand1.ExecuteReader
If a.HasRows = True Then
SqlCommand1 = New SqlCommand(" delete * from darjeagahi where kelideramz='" + txtkelidramz.Text + "'")
SqlCommand1.Connection = SqlConnection1
SqlCommand1.CommandType = CommandType.Text
SqlCommand1.ExecuteReader()
Response.Redirect("hazveagahi.aspx")
SqlConnection1.Close()
Else
eror.Visible = True

End If



در این صورتم این error رو میده:



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


وقتی میام این قسمت
SqlCommand1.ExecuteReader() رو حذف میکنم بدون هیچ اروری اجرا میشه و به صفحه ایی که باید بره ,میره (در صورتی که رمز وارد شده تو دیتابیس باشه یعنی به صورت درست عمل میکنه) ولی ولی ولی اون فیلدهایی که باید حذف بشن از دیتابیس حذف نمیشن.
لطفا" اگر میشه کمکم کنید

milade
سه شنبه 23 تیر 1388, 17:04 عصر
SqlConnection1.Open()
SqlCommand1 = New SqlCommand("select kelideramz from darjeagahi where kelideramz='" + txtkelidramz.Text + "'")
SqlCommand1.Connection = SqlConnection1
SqlCommand1.CommandType = CommandType.Text
a = SqlCommand1.ExecuteReader
If a.HasRows = TrueThen
SqlCommand1 = New SqlCommand(" delete * from darjeagahi where kelideramz='" + txtkelidramz.Text + "'")
a.Close()
SqlCommand1.Connection = SqlConnection1
SqlCommand1.CommandType = CommandType.Text
SqlCommand1.ExecuteNonQuery()
Response.Redirect("hazveagahi.aspx")
SqlConnection1.Close()
Else
eror.Visible = True

EndIf

arhnmn
سه شنبه 23 تیر 1388, 18:30 عصر
مرسی آقای میلاد.مشکلش حل شد ممنونم.فقط باید * هم حذف میشد چون برای اونم errorمیداد که حذفش کردم درست شد.
از کمکمت ممنون

arhnmn
سه شنبه 23 تیر 1388, 19:01 عصر
باید ببخشید یه مشکلی هست که الان متوجه شدم.این جدول darjeagahiکه تو دستور select , delete بود میشه گفت که یه جدول masterهست که اطلاعات مشترک همه ثبت نامیها اونجا میرنو یسری اطلاعات خاصی که مربوط به یک جنس خاصی میره داخل tableمربوط به خودش.مثلا" اطلاعات کلی کسی که داره آگهی آپارتمان میزاره داخل تیبلdarjeagahi میره و اطلاعات خاص خودش داخل تیبل melk میره در مورد ماشین هم همینطور و...............
حالا من چیکار کنم اگه بخوام اطلاعات یه آپارتمان هم از darjeagahi و هم از melk حذف بشه. الان اطلاعات یه آپارتمان فقط از تیبل darjeagahi حذف میشه و از melk با اینکه این جداول با هم ارتباط دارن حذف نمیشه!!!!!!!!
اگه نظراتتون رو بفرمائید ممنون میشم

milade
سه شنبه 23 تیر 1388, 19:31 عصر
سلام .
نام کاربر رو که داری .

Delete from tbl_name where user='username'