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

مشكلة في تعديل البيانات داخل Datagridview

بدأه محمد فؤاد تركي في 6 فبراير 2009 · 4 رد · 1,302 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الاخوة الزملاء

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

مرفق مثال لطريقة تعديل البيانات داخل DataGridView عن طريق StoredProcedure للتعديل

المشكلة هنا عندما اضع رقم الفاتورة وهو رقم 2 لاستدعاء بيانات الفاتورة يتم استدعائها بلا مشاكل

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

post-46243-1233899187_thumb.jpg

مرفق مثال للتعديل عليه

Update_from_Grid.zip

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#2

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

معلش ياستاذنا ممكن تضع البرنامج باصدار اخر لانه مش شغال مع الاصدار الى عندي

انا عندي الاصدار 8

#3

السلام عليكم,,,

التعديل المطلوب:

Imports System.Data.SqlClient
Public Class Form1
	Dim dt As New DataTable

	Dim sqlcon As New SqlConnection("Server=MFOUAD\SQLEXPRESS;Database=WHSYSTEMS;Trusted_connection=yes;")
	Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
		'

		dt.Columns.Add(New DataColumn("DAdd_Doc", System.Type.GetType("System.String")))
		dt.Columns.Add(New DataColumn("ItemNumber", System.Type.GetType("System.String")))
		dt.Columns.Add(New DataColumn("ItemName", System.Type.GetType("System.String")))
		dt.Columns.Add(New DataColumn("Unit", System.Type.GetType("System.String")))
		dt.Columns.Add(New DataColumn("UnitPrice", System.Type.GetType("System.String")))
		dt.Columns.Add(New DataColumn("QtyIn", System.Type.GetType("System.String")))
		dt.Columns.Add(New DataColumn("Total", System.Type.GetType("System.String")))
		dt.Columns.Add(New DataColumn("Discount", System.Type.GetType("System.String")))
		dt.Columns.Add(New DataColumn("GrandTotal", System.Type.GetType("System.String")))
		''********لاحظ هذا السطر*******
		dt.Columns.Add(New DataColumn("ID", System.Type.GetType("System.Int32")))

		AddDGV.DataSource = dt

		AddDGV.Columns(0).HeaderText = "رقم الفاتورة"
		AddDGV.Columns(1).HeaderText = "كود الصنف"
		AddDGV.Columns(2).HeaderText = "بيان الصنف"
		AddDGV.Columns(3).HeaderText = "الوحدة"
		AddDGV.Columns(4).HeaderText = "الكمية"
		AddDGV.Columns(5).HeaderText = "سعر الوحدة"
		AddDGV.Columns(6).HeaderText = "المجموع"
		AddDGV.Columns(7).HeaderText = "الخصم"
		AddDGV.Columns(8).HeaderText = "الاجمالي"

		AddDGV.Columns(0).Width = 70
		AddDGV.Columns(1).Width = 150
		AddDGV.Columns(2).Width = 183
		AddDGV.Columns(3).Width = 50
		AddDGV.Columns(4).Width = 60
		AddDGV.Columns(5).Width = 60
		AddDGV.Columns(6).Width = 60
		AddDGV.Columns(7).Width = 60
		AddDGV.Columns(8).Width = 60

		''********لاحظ هذا السطر*******
		AddDGV.Columns.RemoveAt(9)

		AddDGV.RowHeadersWidth = 29

		With Me.AddDGV
			.RowsDefaultCellStyle.BackColor = Color.Aqua
			.AlternatingRowsDefaultCellStyle.BackColor = Color.White
		End With
	End Sub

	Private Sub TEXSearch_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles TEXSearch.Leave
		Try

			sqlcon.Open()

			Dim cmd2 As New SqlCommand("AddDocSearchForDataDetail", sqlcon)
			cmd2.CommandType = CommandType.StoredProcedure
			cmd2.Parameters.AddWithValue("@DAdd_doc", TEXSearch.Text)

			Dim TexInv2 As SqlDataReader = cmd2.ExecuteReader

			Do While TexInv2.Read()
				Dim DR As DataRow = dt.NewRow
				DR("DAdd_Doc") = TexInv2("DAdd_Doc") '.ToString
				DR("ItemNumber") = TexInv2("ItemNumber") '.ToString
				DR("ItemName") = TexInv2("ItemName") '.ToString
				DR("Unit") = TexInv2("Unit") '.ToString
				DR("QtyIn") = TexInv2("QtyIn") '.ToString
				DR("UnitPrice") = TexInv2("UnitPrice") '.ToString
				DR("Total") = TexInv2("Total") '.ToString
				DR("Discount") = TexInv2("Discount") '.ToString
				DR("GrandTotal") = TexInv2("GrandTotal") '.ToString
				''********لاحظ هذا السطر*******
				DR("ID") = TexInv2("ID") '.ToString
				dt.Rows.Add(DR)
			Loop
			''********لاحظ هذا السطر*******
			dt.AcceptChanges()
		Catch ex As Exception
			MsgBox("هذا الرقم غير موجود", MsgBoxStyle.Critical, "تحذير")

		End Try
		'  TexInv2.Close()
		sqlcon.Close()
	End Sub

	Private Sub Btn1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn1.Click
		Try

			sqlcon.Open()
			Dim updatecommand As New SqlCommand("AddDocUpdateDetail", sqlcon)
			updatecommand.CommandType = CommandType.StoredProcedure

			TEXSearch.Focus()
			updatecommand.Parameters.Add("@ID", SqlDbType.Int, 4, "ID")
			updatecommand.Parameters.Add("@DAdd_Doc", SqlDbType.Int, 4, "DAdd_Doc")
			updatecommand.Parameters.Add("@ItemNumber", SqlDbType.NVarChar, (50), "ItemNumber")
			updatecommand.Parameters.Add("@ItemName", SqlDbType.NVarChar, (50), "ItemName")
			updatecommand.Parameters.Add("@Unit", SqlDbType.NVarChar, (20), "Unit")
			updatecommand.Parameters.Add("@QtyIn", SqlDbType.NVarChar, (20), "QtyIn")
			updatecommand.Parameters.Add("@UnitPrice", SqlDbType.NVarChar, (20), "UnitPrice")
			updatecommand.Parameters.Add("@Total", SqlDbType.NVarChar, (20), "Total")
			updatecommand.Parameters.Add("@Discount", SqlDbType.NVarChar, (20), "Discount")
			updatecommand.Parameters.Add("@GrandTotal", SqlDbType.NVarChar, (20), "GrandTotal")

			AddDGV.RefreshEdit()
			AddDGV.EndEdit()

			''********لاحظ هذا السطر*******
			Dim da As New SqlDataAdapter
			'da.InsertCommand = updatecommand
			da.UpdateCommand = updatecommand

			da.Update(dt)
			dt.AcceptChanges()
			MsgBox("تم التعديل", MsgBoxStyle.OkOnly + MsgBoxStyle.Information, "تعديل")

		Catch ex As Exception
			MsgBox(ex.Message)
		End Try
	End Sub
End Class

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

[وسط]لا اله الا انت سبحانك انى كنت من الظالمين

[/وسط]

#4

بارك الله فيك أخي الغالي حسن

فعلا ظبط معي الكود

شكرا جزيلا لك

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#5

العفو اخي محمد,,,

كمان في ملاحظة بسيطة لو سمحت, انت ممكن تستغني عن استخدام DataReader بهذا الشكل:

Private Sub TEXSearch_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles TEXSearch.Leave
		Try
			Dim cmd2 As New SqlCommand("AddDocSearchForDataDetail", sqlcon)
			cmd2.CommandType = CommandType.StoredProcedure
			cmd2.Parameters.AddWithValue("@DAdd_doc", TEXSearch.Text)
			Dim da As New SqlDataAdapter(cmd2)
			da.Fill(dt)
		Catch ex As Exception
			MsgBox("هذا الرقم غير موجود", MsgBoxStyle.Critical, "تحذير")
		End Try

	End Sub

[وسط]لا اله الا انت سبحانك انى كنت من الظالمين

[/وسط]

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