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

أين الخطأ في الكود

مغلق
بدأه apple في 28 نوفمبر 2007 · 4 رد · 606 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

ارجو منكم مساعدتي في ايجاد الخطأ او الناقص في الكود الخاص بحذف سجل من الداتابيس.

الاول كان شغال ميه ميه هذا لما كنت اعمل حذف للعنصر في نفس الفورم الرئيسي.

الآن لما اضغط على بوتن الحذف يفتح لي فورم فرعي خاص بالحذف، يختار منه العنصر المراد حذفه .

بعد اتمام الحذف العنصر المختار يحذف والكومبوبوكس يتحدث ولكن لما ارجع الى الفورم الرئيسي اجد البيانات لسه موجوده واكتشفت ان التحديث لايتم في الداتابيس.

طيب كان شغال ويحدث الداتابيس لما كان على الفورم الرئيسي، وين المشكله؟؟

غير كده، لما احاول احذف السجلات بعضهم ينحذفو والبعض مايقبل الحذف وتطلع لي هذي المسج:

Concurrency violation: the DeleteCommand affected 0 of the expected 1 records

Private Sub Button14_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button14.Click
		If ComboBox6.SelectedValue = "" Then
			Err.Visible = True

		Else
			Err.Visible = False
			Dim text_box As New TextBox
			If MsgBox("هل أنت متأكد من حذف الصنف المختار؟", MsgBoxStyle.OkCancel) = MsgBoxResult.Cancel Then
				Exit Sub
			End If
			'Try

			text_box.Text = ComboBox6.SelectedValue.ToString
			Dim SavInto As New OleDb.OleDbCommand
			Dim DataAdapter1 As New OleDb.OleDbDataAdapter(sql, con)
			SavInto.Connection = con
			SavInto.CommandType = CommandType.Text
			SavInto.CommandText = "DELETE FROM Type_T WHERE Type ='" & _
			Trim(text_box.Text) & "'"
			If con.State = ConnectionState.Closed Then
				con.Open()
			End If
			SavInto.ExecuteNonQuery()
			ds.Clear()
			da.Fill(ds, "Table1")

			Done.Visible = True

			sql = "SELECT * FROM Type_T ORDER BY Type "
			da = New OleDb.OleDbDataAdapter(sql, con)
			ds.Clear()
			da.Fill(ds, "Temp_table")

			' refresh combobox after addition 
			Me.ComboBox6.DataSource = ds.Tables("Temp_table")
			Me.ComboBox6.Refresh()
			Me.ComboBox6.DisplayMember = "Type"
			Me.ComboBox6.ValueMember = "Type"
			'Catch ex As Exception
			'MessageBox.Show(ex.Message)
			' End Try
			Me.Close()
			Main.Show()
		End If

End Sub

معتمد على الله ثم عليكم، أنا في امس الحاجة الى معرفة الخطأ وفي اسرع وقت ممكن

تم تعديل هذه المشاركة بواسطة apple في 28 نوفمبر 2007 في 20:59

#2

الخطأ في جملة

SavInto.ExecuteNonQuery()

حيث ExecuteNonQuery تستعمل لتنفيد جملة استعلام دون ارجاع أي قيمة ....

هناك شيء آخر .. da هل تقصد بها DataAdapter1 ؟

وأيضا أنت بصدد مسح سطر من Type_T ادن لمادا تعبأ da عن طريق SavInto ؟

مقالاتي في VB.NET وبرامجي على موقعي الجديد :

#3
Fikou-sama كتب:
الخطأ في جملة

SavInto.ExecuteNonQuery()

حيث ExecuteNonQuery تستعمل لتنفيد جملة استعلام دون ارجاع أي قيمة ....

شكرا على ملاحظاتك وجزاك الله عني خير الجزاء واسكنك فسيح جناته

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

وجملة ExecuteNonQuery انا لااطلب منها ارجاع قيمة الصفوف التي اجري عليها التعديل، اذا كان هناك بديل عنها ياريت لو تعلمني

وفي شيء ثاني لما ارجع للفورم الرئيسي مايحدث لي الكومبوبوكس اللي موجود فيه، اعتقد ان من المفترض اني اعمل له ريفريش مره ثانيه

بس سؤالي هو اين اضع الريفريش عشان لما اعمل سويتش من فورم التعديل الى الفورم الرئيسي تظهر التغييرات؟

تم تعديل هذه المشاركة بواسطة apple في 28 نوفمبر 2007 في 23:49

#4

المفروض تعمل Refresh بعد التغيير في DataSet ...

مقالاتي في VB.NET وبرامجي على موقعي الجديد :

#5

تم حل المشكله

شكرا على المساعده وجزاكم الله خير

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

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