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

كيف أعرف أن البيانات تغيرت في الداتا سيت في Vb2005

مغلق
بدأه was_hal في 17 مايو 2006 · 30 رد · 3,390 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#26

السلام عليكم

من الملاحظ في المشروع هو عدم استخدم الـ DataGridView لجدول الابن وهذا بطبيعة الحال كون العلاقة 1 إلى 1

هنا تحتاج كل مرة يتم الضغط على القائمة المنسدلة أو كلاهما أن ننادي السلوك AddNew لإنشاء ID جديد لجدول الابن

إذا نستخدم الـتالي لإنشاء رقم جديد. سواءً كان هنالك AutoNumber أو لا أنما هي عملية أضافة صف جديد في جدول الابن.

   Employee_InfoBindingSource.CurrencyManager.AddNew()

الان لإظهار المفتاح الثانوي المرتبط بالمفتاح الاساسي في الجدول الاب سنقوم بعملية إنعاش لل CurrencyManager بهذا الشكل

 Employee_InfoBindingSource.CurrencyManager.Refresh()

الان تبقت مشكلة التحديث قم بتحديث جدول الاب كلما تم الضغط على TabControl1 و إن شاء الله ستحل المشكلة

أضافة إلى ذلك هنالك خطأ في تصميم جدول Employee_Info حيثُ انه ليس به Indexing ID يجب أن تضع

حقل يأخذ رقم تلقائي لآجل تفعيل عملية تنظيم الجدول و سرعة الوصول للبيانات عن طريق مكانيكية الـ Indexing

العلاقة تعمل بدون الـ Indexing لكن من باب الاداء و التحسين فـالـ Indexing ضرورة في كل جدول...

شاهد مشروعك المرفق بعد الإصلاح , لكن ليس هذا هو الحل الامثل بالنسبة لموضع الاكواد

أبحث عن الطريقة المثلى لذلك........

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

HasChangesData_Fixed.rar

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

#27

شكرا أخي الغملاسي لمساعدتك

سأجرب و أرد عليك إن شاء الله

1338031614581.png

" اللهــم إنّا مغلــوبــون فانتصــــر "

(اللهم سبحانك لا علم لنا إلا ما علمتنا إنك أنت العليم الحكيم)

#28

السلام عليكم

أخي الغملاسي شكرا جزيلا لك لقد حللت نصف المشكلة

ولكن عذرا لم تجبني على سؤالي أنا أريد أن أعرف متى تتغير البيانات عن طريق فحص القيمة في التابع HasChanges ولا أريد أن أجبر المستخدم دائما على الحفظ

كما فعلت أنت في المثال <_<

رجاء أخي و جميع الاخوة في هذا المنتدى الرائع أخبروني هل التابع لا يعمل و اريحوني لكي ابحث عن طريقة أخرى للحل و انتهى الموضوع

لقد جربت كما قال الأخ سامر و كان واضح في المثال وضعت EndEdit قبل استدعاء هذا التابع لكن الطريقة لم تعمل معي و شاهدتم المشكلة كلكم

ثانيا : أخي هنا مشكلة أخرى و هي أنني لا استطيع أن أضيف التفاصيل مع البيانات العامة مباشرة أي لا استطيع أن اضيف القيم في الجدول الأساسي Employees

و الجدول الأبن Employee_Info بنقس الوقت دون حفظ بيانات الجدول الأساسي أولا

أي أدخل البيانات العامة ثم انتقل بالـ Tabcontrol إلى التفاصيل و ادخلها ثم اقوم بالحفظ

هذه هي المشكلة

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

و السلام

تم تعديل هذه المشاركة بواسطة was_hal في 15 يونيو 2006 في 20:12

1338031614581.png

" اللهــم إنّا مغلــوبــون فانتصــــر "

(اللهم سبحانك لا علم لنا إلا ما علمتنا إنك أنت العليم الحكيم)

#29

لماذا استخدمنا currencymanager ولم نستخدم مثلا baindingsource.addnew

يعني باختصار ممكن احد يقدمنا شرح وافي عن انواع العلاقات والتعامل معها بالفيجوال ولو في موضوع منفصل.

تم تعديل هذه المشاركة بواسطة mbmh في 16 يونيو 2006 في 18:46

#30

السلام عليكم

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

هداك الله اخي وما هي البرمجة إلا إلتفاف على العناصر التي نتعامل معها .

لانه ليس هنالك أمر قطعي , حتى يثبت بالتجربة العملية ( لا الأكاديمية)

لذلك كانوا جزاهم الله خير, ينوهن عليك بهذا و تلك لعلك تجد قطعاً ما يجيب على سؤالك ذلك.

على كل حال , ربما والله أعلم أن HasChange لا تعمل كما هو متوقع منها مع الجداول و الـ DataSet

وربما تكون أكثر دقة مع الصفوف Rows أو بعناصر أخرى.

هنالك حل أخر مع العنصر الجديد في Framework 2.0 وهو الـ Binding source حيث يتعقب العناصر المرتبطة به كنصوص الادخال

أو خانات المخصص للصور أو اي عنصر يرتبط به , شاهد النصوص البرمجية لذلك.

	Private dataEdited As Boolean = False
	Private Sub Form1_Load( _
	ByVal sender As System.Object, _
	ByVal e As System.EventArgs) Handles MyBase.Load

		Me.EmployeesTableAdapter.Fill(Me.DSMain.Employees)

		'Track employees bindingsource complete event.
		'Fire when data pushed to or back to datasource.
		AddHandler EmployeesBindingSource.BindingComplete _
		, AddressOf EmployeesBindingComplete

		'Track employees bindingsource position changed.
		'Fire after the position property of bindingsource
		'has changed to another position even when adding new row()
		AddHandler EmployeesBindingSource.PositionChanged _
		, AddressOf EmployeesCurrentChanged

	End Sub


	Private Sub EmployeesBindingComplete( _
	ByVal sender As Object, ByVal e As BindingCompleteEventArgs)

		'Examine the datasource has been updated from the control property.
		If e.BindingCompleteContext = BindingCompleteContext.DataSourceUpdate Then

			'if the flag off , and completion binding successed.
			'and also the control being editing in focus.
			If Not dataEdited And e.BindingCompleteState = _
			BindingCompleteState.Success And _
			e.Binding.Control.Focus Then

				'Turn the flag on.
				dataEdited = True

			End If
		End If
	End Sub

	Private Sub EmployeesCurrentChanged( _
	ByVal sender As Object, ByVal e As EventArgs)

		'If the flag on.
		If dataEdited Then

			'Create response message.
			Dim msg As String = "تم تحرير بيانات السجل الحالي, هل تود حفظ هذا التحديث"
			Dim title As String = "تحديث بيانات السجل الحالي"
			Dim style As MsgBoxStyle
			Dim response As MsgBoxResult

			style = MsgBoxStyle.DefaultButton2 Or _
			   MsgBoxStyle.Exclamation Or MsgBoxStyle.YesNo _
			 Or MsgBoxStyle.MsgBoxRight

			response = MsgBox(msg, style, title)

			'If the user accept what has been editing. then
			If response = MsgBoxResult.Yes Then

				'update the data.
				Me.EmployeesBindingNavigatorSaveItem.PerformClick()
			Else
				'otherwise cancel current edit.
				Me.EmployeesBindingSource.CancelEdit()
			End If
		End If

		'switch the flag of , for next mission.
		dataEdited = False
	End Sub

هذه النصوص منوهَ عليها من قبل عمالقة البرمجية في الـ VB.NET

شاهد الملف المرفق للإختبار

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

TrackingChangeBindingSourceApp.rar

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

#31

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

المثال يعمل تماااااااااااام ....

ولكن سأدرس الكود إن شاء الله و أرد عليك إذا تطلب الأمر

سلام عليكم

1338031614581.png

" اللهــم إنّا مغلــوبــون فانتصــــر "

(اللهم سبحانك لا علم لنا إلا ما علمتنا إنك أنت العليم الحكيم)

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…