Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click If DT.DefaultView.RowStateFilter = DataViewRowState.Added Then Da.Update(DT.GetChanges(DataRowState.Added)) ElseIf DT.DefaultView.RowStateFilter = DataViewRowState.Deleted Then Da.Update(DT.GetChanges(DataRowState.Deleted)) ElseIf DT.DefaultView.RowStateFilter = DataViewRowState.ModifiedCurrent Then Da.Update(DT.GetChanges(DataRowState.Modified)) End If End Sub
لماذا هذ الكود لا يعمل في Vs.net 2005 مع إني شغال به فى 2003 تمام
جرب GetChanges() بدون معاملات ليحث كل ما تم تغييره من اضافه ةتعديل وحذف
هل هناك اخطاء تظهر لك ؟ ما هى؟
لو إستخدمنا هذه الطريقة ....... لما إستفدنا من الأدو بشكل صحيح حيث أنى أرد أن أتعامل مثلا مع 1000 سجل فى جدول ما وعند عمل سجل جديد بهذه الطريقة التى اوردتها سيحدث الجدول بأكمله ... ولكن انا أريده يدحث السجلات الجديده فقط للسرعة والحفظ على البيانات
وعلى العموم هذه الطريقة أيضا لم تفلح :
If DT.DefaultView.RowStateFilter = DataViewRowState.Added Then
MsgBox("Providers")
Da.Update(DT.GetChanges())
ElseIf DT.DefaultView.RowStateFilter = DataViewRowState.Deleted Then
Da.Update(DT.GetChanges())
ElseIf DT.DefaultView.RowStateFilter = DataViewRowState.ModifiedCurrent Then
Da.Update(DT.GetChanges())
End Ifتصدق .... بعد إضافة السجل الجديد لم يظهر هذه الرسالة ،، إذا لم يعلم بانه تم إضافة سجل جديد ؟؟؟؟؟؟؟؟
هلا من مجيب
ألوووووووووووووووووووووو
لم تخبرنا بطبيعة الخطأ الذي يحدث.
أصلا لا يوجد خطأ
هو لا يدخل فى IF أصلا
هل حاولت أن تعمل Debug أو Trace لتعرف ما هي قيمة RowStateFilter ؟
CurrentRows
يبدو لي أن الخطأ ليس من الكود الذي أرفقته بل في الكود الذي يقوم بتعديل الداتاست
ألووووووووووووووووووو
ألا من مجيب
استبدل الشرط القديم بهذا الشرط:
if (dt.GetChanges(DataRowState.Added).Rows.Count>0)
اخي الكود يحتوي على خطأ و هي انك مستخدم ال DataView
و المثود GetChanges يعد نسخة من الداتا سد او داتا تيبل حسب الاستخدام
حاول الكود التالي
Dim Ds As DataSet If Ds.HasChanges Then Dim Allchanges As DataSet = Ds.GetChanges Dim OnlyModified As DataSet = Ds.GetChanges(DataRowState.Modified) End If
يا جماعة أرجوكم حد يرفع مثال يوضح الحل عشان انا تعبت من كتر التجارب .
وجزاكم الله خيرا على الإهتام وياريت حد يرفعلي مثال على الحفظ والجديد والمسح والتعديل بالوضع المنفصل فقط HasChange أقصد .
هل هناك مشكلة مع الأمر الذي ذكرته لك؟
يا اخي هناك فرق بين
HasChanges و GetChanges
يعيد قيمة بولين اذا كان قد حصل تعديل على الداتا سيت HasChanges
GetChanges تعيد نسخة من الصفوف التي تم التعديل عليها من الداتا تيبل او الداتا سيت
و عندي ملاحظ بسيطة
عند تنفيذ الامر
update على الداتا اديبتر لا يحدث جميع السجلات الموجودة داخل الداتا سيت و لكن سوف يقوم بتحديث فقط الصفوف التي تم التعديل عليها و حذفها و اضافتها
مثلا عندك داتا تيبل متكونة من 100000 سطر
و قمت بضافة 6 سطور
و تعديل 25 سطر
و خذف 8
الداتا ادابتر سوف يجري هذا التعديلات فقط و هي 6 + 25 + 8 بدون التحديث على السطور التي لم تتغير
تم تعديل هذه المشاركة بواسطة slayer666 في 24 مارس 2008 في 12:52
ولا ده نافع Da.Update(DT.GetChanges())
ولا ده نافع
Da.Update(DT)
ويا جماعة أرجوكم انا عاوز رد عملي كل النظري هذا انا مش عاوزه لو سمحتم مثال يوضح الإجابة ،،،، مثال لا يجعلني أرد مره ثانية
هل جربت الشرط الذي كتبته أم لا؟
كل الردود إلي ذكرت جربتها كلها .
إذن قد تكون لديك مشكلة أخرى. الكود الذي كتبته من قبل تم تجربته على الكود الذي ارفقته و هو يعمل بشكل صحيح.
طيب ممكن ترفقلى المثال بعد التعديل , أى وهو شغال ............. وإرفاقة أسهل من الشرح ............. وشكرا جزيلا
:resentful:
ألوووووووووووووووووو


