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

لماذا لا تعمل خاصية GetColumnsInError هل هذا عيب من ميكروسوفت

مغلق
بدأه عابد الرحمن في 17 أغسطس 2006 · 5 رد · 542 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

رغم انى باحث جيد فى الانترنت ولكنى للاسف لم اجد حلا لمشكلة GetColumnsInError

وارجوا من خبراء الدوت نت ان يخبرونى لماذا هذه الخاصية لا تعمل فى الفيجوال بيسك دوت نت سواء النسخة 2003 او 2005

دائما ما ترجع مصفوفه Column خالية رغم وجود Error فى ال Row

ياليت خبير يخبرنى ما السبب

وهذا هو الجزء من الكود الذى احاول ان استخلص منه الحقول التى حصل فيها الخطأ ولم يحصل لها Update

			   Dim colArr() As DataColumn
			   colArr = DS.Tables("tblCat").Rows(4).GetColumnsInError.
			   For i = 0 To colArr.GetUpperBound(0)
				  MsgBox(colArr(i).ColumnName)
			   Next

:(

#2

أرجو ان يتم الرد على السؤال فضلا لا أمرا

#3

السلام عليكم

هنالك طريقة أخرى استخدمتها منذُ زمن , عن كيفية البحث عن كل الاخطاء في الـ DataSet فيمكنك الاستفادة منها إن شاء الله إليك النصوص البرمجية لذلك.

#Region " Data Set Error Checking "

	Private Function CheckDataGrid(ByVal ds As DataSet) As String
		Dim dr As DataRow
		Dim dt As DataTable
		Dim ArrErrors() As DataColumn = Nothing
		Dim i As Integer
		Dim Message As String = String.Empty
		Dim TableName As String = String.Empty
		Try
			If ds.HasErrors Then

				'Search each table in dataset object.
				For Each dt In ds.Tables
					If dt.HasErrors Then
						TableName &= " " & GetTableName(dt) & " . "
						For Each dr In dt.Rows
							ArrErrors = dr.GetColumnsInError()
						Next
					End If
				Next


			Else
				Return String.Empty
			End If

			'Find the specific column's error.
			For Each col As DataColumn In ArrErrors
				Message += " عامود " & ArrErrors(i).Caption & " " & _
			" فيه خطأ " & " بالتحديد في," & TableName
			Next
			Return Message


		Catch ex As Exception
			MessageBox.Show(ex.Message)
		End Try
		Return String.Empty

	End Function

	'return Table Name in Arabic 
	Private Function GetTableName(ByVal Table As DataTable) As String
		Select Case Table.TableName.ToString
			Case "Main"
				Return "الجدول الرئيسي"
			Case "Punishment"
				Return "جدول العقوبات"
			Case "Vacation"
				Return "جدول الإجازات"
			Case "ExitAllowed"
				Return "جدول تصاريح الخروج"
			Case Else
				Return "قيمة غير معروفة"
		End Select
	End Function
#End Region

أما عن سبب الخطأ في الكود المعروض لديك, فربما والله أعلم أن تحدد الصف بدل العامود كما هوه المثال في الـ MSDN , ربما يحتمل كلامي الخطأ كذلك..

السلام عليكم.

في المثال يتضح المقال

#4

اشكرك اخى الحبيب الغملاسى على تكلفك الرد

والمشكلة اخى ان هذه الخاصية لا تعمل ابدأ ولقد جربت الكود الذى كتبته لى انت ولم تستجب الخاصية ايضا رغم ان ال Row يحتوى خطأ ولكن لا يتمكن من معرفة ال Col المحتوى على الخطأ

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

بارك الله فيك

استدراك :

أظن والله أعلم أن هذه الخاصية لا تعمل مع قواعد بيانات أكسس وإنما تعمل فقط مع SqlServer

وهذا مجرد استنتاج

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

هذا والله أعلم

-----------------------------------------------------

اعتذر عن تأخرى فى الردود بسبب أعطال النت المتكرره عندى هذه الايام

#5

ألم أقل لكم إنها مشكلة عويصة :)

#6

السلام عليكم

شاهد المثال المرفق لأختبار القيمة ( ضع قيمة رقمية في الاسم name وضع قيمة نصية في العمر age وشاهد الناتج )

ملاحظة الخاصية GetColumnsInError تترصد القيم القادمة من الاجراء SetColumnError غير ذلك لا تعمل الوظيفة إلا مع المذكور لتو.

إذا كان الخطأ خارج عن نطاق المؤلوف كخطأ ناتج عن العلاقة بين جدولين فهذا أمر يحتاج للنظر في العلاقات أصلاً قبل المضي في تطوير المشروع

بالتوفيق إن شاء الله.

DataGridViewColumnError.rar

في المثال يتضح المقال

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

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