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

نظرا لكثرة الأسئلة عن طريفة الحفظ بالوضع المنفصل تم وضع مثال لذلك .

بدأه Providers في 29 أبريل 2008 · 16 رد · 5,316 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

نظرا لكثرة الأسئلة عن طريقة الحفظ بالوضع المنفصل فقد وضعت مثال مرفق فية الحل .

والردود التى فى الموضوع ده كثيره ولكن لم أجد فى أى منهم رد على ما كنت أريده .

وأى سطر مش مفهوم من الكود يرجى توضيحه .

وعملت المثال بالــ VB.NET لأن مبرمجوا الـ C#.net يعرفوا الـ VB و ليس العكس غالبا .

Save_Less_Connection.rar

1
#2

شكرا لك أخي Providers

ولو سمحت ممكن تشرح الكود ده

 Dim DS_Change As New DataSet
		Dim DS_Upload As New DataSet
		If ds.HasChanges = True Then
			cmdb.DataAdapter = da
			DS_Change = ds.GetChanges
			'add
			DS_Upload = DS_Change.GetChanges(DataRowState.Added)
			If (Not (DS_Upload) Is Nothing) Then da.InsertCommand = cmdb.GetInsertCommand

			'Delete
			DS_Upload = DS_Change.GetChanges(DataRowState.Deleted)
			If (Not (DS_Upload) Is Nothing) Then da.DeleteCommand = cmdb.GetDeleteCommand

			'Update
			DS_Upload = DS_Change.GetChanges(DataRowState.Modified)
			If (Not (DS_Upload) Is Nothing) Then da.UpdateCommand = cmdb.GetUpdateCommand()

			da.Update(ds.Tables("info"))
			ds.AcceptChanges()

		End If

لاني لا أستخدم ال CommandBuilder

ولا حظت استخدامك لأكثر من داتا سيت ؟؟؟ فلماذا

وشكرااااااااااا

كـلـمـا زاد عـلـمـك لـلـشـئ الـمـجـهـول ..... كـلـمـا زاد جـهـلـك لـلـشـئ الـمـعـلـوم

و كـلـمـا زاد جـهـلـك لـلـشـئ الـمـعـلـوم ..... كـلـمـا زاد شـغـفـك لـعـلـم الـمـجـهـول

الــلـــــــهـــــم عـــلـــمـــنــــــي بـــمـــا يـــنــفــعــنــي وانــفــعــنــي بــمــــا عـــلـــمــتــنـــي

#3

thanks broth

سبحان الله و الحمد لله و الله أكبر

#4

بالنسبة لإضافة أكثر من DataSet انت ممكن تختصرهه فى إثنان أو واحده فقط ، ولكن انا إستخدمت 3 DataSet نقلا لمثال لأحد الأخوه هنا فى المنتدى فى نفس الموضوع ، وهى أفضل أيضا لسهوله الفهم .

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

أما موضوع CommandBuilder :

لو تتذكر أداه OleDBCommand بتاعة الوضع المتصل كان إيه إستخدمهه ...... كنت من خلالها بترسل للداتا بيز أوامر SQL من تحديث وحفظ ومسح .... إلخ . يعنى كنت انت إلى بتكتب جمل الــ SQL بيدك .

ولكن مع CommandBuilder الوضع يختلف .... فهذه الأداة هى التى تصنع جمل SQL بنفسها ثم تعطيهه للــ DataAdapter لإرسالها للــ DataBase ، فكما تعلم أن Dataadapter هى المسؤله عن جلب وإرسال البيانات من وإلى DataBase ولكن عند الإرسال يجب أن تحدد من خلال هذا السطر cmdb.DataAdapter = da ان الــ CommandBuilder سوف تصنع جمل SQL ثم ترسلهه للــ Dataadaper لكى تقوم الــ Dataadaper بإرسال التغير للــ Database .

#5

جزاك الله خيري الدنيا و الآخرة و نفع بك

بارك الله فيك

#6

الاخ الكريم Providers

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

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

Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information.

لا ادري سبب هذه الرسالة

كل ما اريد ان افعله هو:-

انا عندي DataTable و قد عدل المستخدم بيه بعض الحقول و اريد نقل هذه التحديثات إلى قعدة البيانات هذا هو المطلوب؟

و مرفق مع الرد البرنامج بتاعي ارجوا ان تقول لى ايه الخطء

الرجاي المساعد جذاك الله خير

AdoTest.rar

#7

شكرا لك أخي Providers

وجزاك الله كل خير

#8

:D :lol: السلام عليكم اخوي انا شوفت شغلك ماشاء الله مره مرتب

وابي منك خدمه اذا تقدر

ابي كود البحث في الداتا قريد فيو لاني بسراحه حست مررررررره

وراح ارفقلك شغلي وبليز ترد عليا لانه ما في احد بيرد عليه بليززززززززززززززززز

الملفات المرفقة

aysha.rar‏ (57.3 ك/بايت, عدد مرات التحميل : 2)
#9

aysha.rar

:( الملف المرفق يا ليت ترد عليا بليز

المطلوب

انه يبحث في الداتاقريد فيو

#10

مرحبا اخ providers لوسمحت بس ابي منك كود البحث في داتاقريد فيو بس بشرط يكون على قاعدة بيانات sql بليز ترد اذا عندك اي معلومه :mellow:

#11
اقتباس
كل ما اريد ان افعله هو:-

انا عندي DataTable و قد عدل المستخدم بيه بعض الحقول و اريد نقل هذه التحديثات إلى قعدة البيانات هذا هو المطلوب؟

و مرفق مع الرد البرنامج بتاعي ارجوا ان تقول لى ايه الخطء

الرجاي المساعد جذاك الله خير

أظن أني قرأت من قبل في هذا الموضوع أنه لابد أن يكون هناك حقل مفتاح أساسي فى الجدول المراد تعديله .

جرب ورد عليه .

"""""""""""""""""""""""""""""""""""""""""""""

اقتباس
مرحبا اخ providers لوسمحت بس ابي منك كود البحث في داتاقريد فيو بس بشرط يكون على قاعدة بيانات sql بليز ترد اذا عندك اي معلومه

انا آسف للتأخير معذرة .

ممكن الكود ده ينفعك :

MyDataView.RowFilter = "ask like('" + Trim(txtFind.Text) + "%')"

أو

 datatable mydt = new datatable;
 DataRow[] matchedRows = dt.Select("جملة إستعلام عادية");

وكان فيه أسهل من كده كمان بس لم أجدها الآن !

#12

جزاك الله خير

#13

جزيت خيراً ،،

ما قصرت يا الغالي ،،

ودي أسألكـ عن البحث السريع ،،

بمجرد أن أضع حرف واحد في textbox تظهر لي النتائج ؟

والشكرموصول لك أخي الغالي ،،

#14
أبوسامي المخلفي كتب:
جزيت خيراً ،،

ما قصرت يا الغالي ،،

ودي أسألكـ عن البحث السريع ،،

بمجرد أن أضع حرف واحد في textbox تظهر لي النتائج ؟

والشكرموصول لك أخي الغالي ،،

	Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
		Dim dt As DataTable = New DataTable("MyTableName")
		Dim dv As DataView = dt.DefaultView
		If TextBox1.Text <> "" Then
			dv.RowFilter = "myCol like" + TextBox1.Text + "%"
		Else
			dv.RowFilter = Nothing
		End If

End Sub

#15

بصراحة مثال رائع جداً

ولقد حل الكثير من العقد.

ولجميع الأخوة ! أي شرح بخصوص هذه الأكواد ستجدونه في الموضوع المثبت بعنوان :

درس في ADO.NET من الصفر إلى الإحتراف ., لمن وجد أنه مبتدئ و أن ADO.NET معقد ومستحيل الفهم .

جزاك الله خير

تم تعديل هذه المشاركة بواسطة human2x في 20 أكتوبر 2009 في 09:48

#16

أخى الكريم Providers أقدم لك خالص تحياتى على هذا المثال الرائع..

ولكن هناك مشكلة فى الحفظ....

لايتم حفظ السجل الحالى إلا بعد الانتقال إلى سجل آخر..

أى بمعنى HasChanges لا ترى التعديلات إلا بعد الانتقال إلى سجل آخر...

            If (DS.HasChanges = True) Then
                CMDB.DataAdapter = DA
                DS_Change = DS.GetChanges

                'add
                DS_Upload = DS_Change.GetChanges(DataRowState.Added)
                If (Not (DS_Upload) Is Nothing) Then DA.InsertCommand = CMDB.GetInsertCommand

                'Delete
                DS_Upload = DS_Change.GetChanges(DataRowState.Deleted)
                If (Not (DS_Upload) Is Nothing) Then DA.DeleteCommand = CMDB.GetDeleteCommand

                'Update
                DS_Upload = DS_Change.GetChanges(DataRowState.Modified)
                If (Not (DS_Upload) Is Nothing) Then DA.UpdateCommand = CMDB.GetUpdateCommand()

                DA.Update(DS.Tables("tblClients"))
                DS.AcceptChanges()

تقبل فائق تحياتى

#17

الحمدلله تم التوصل للحل عن طريق

validation

و

End Edit

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