PDA

View Full Version : متدهای GetChanges و HasChanged کار نمی کنن



emad4000
جمعه 10 شهریور 1385, 13:15 عصر
من تو برنامه ام از متدهای GetChanges و HasChanged دیتاست استفاده می کنم ولی Error میده و میگه که Object به یک مقدار Null رفرنس داده شده در حالی که دیتاست رو New کردم و کلی رکورد توشه

برای محکم کاری روی سینی ابزار و از طریق GenerateDataset یه دیتاست با همون ساختار دیتاست قبلیم ساختم - که توی Designer نیو شده -
اسم کلاس دیتاست اصلیم field_DS_3 و دیتاست دومی - برای گرفتن تغییرات - temp_DS ه .



field_DS_31.AcceptChanges();
temp_DS1 = (Temp_DS)field_DS_31.GetChanges(DataRowState.Added );



به این شکل هم همون مشکلو داره


field_DS_31.AcceptChanges();
DataSet temp_ds=new DataSet();
temps_ds=field_DS_31.GetChanges(DataRowState.Added );


لطفا اگه میدونین مشکل چیه کمکم کنین

omid_Ahmadi
شنبه 11 شهریور 1385, 07:52 صبح
مشکل از فراخوانی متد AcceptChanges قبل از گرفتن تغییراته. این متد استیت تمام ردیفهای اطلاعاتی رو به Unchanged تغییر میده و ردیفهایی که استیت اونها به صورت Deleted هست رو نیز حذف می کنه. خوب مسلما در این حالت متد GetChanges مقدار NULL رو برمیگردونه چون استیت تمام ردیفها Unchanged هست.

emad4000
یک شنبه 12 شهریور 1385, 21:36 عصر
بله
درسته . منظورتون رو فهمیدم
ولی قبل از اینکه AcceptChanges رو فراخوانی کنم هم Error داشت که الان یادم نیست چی بود . حالا نگاه می کنم براتون می نویسم . جدا از این به نظرتون مشکلی نداره ؟؟

omid_Ahmadi
یک شنبه 12 شهریور 1385, 22:27 عصر
کد اول درسته، مشکلی نداره. فقط نباید متد AcceptChanges رو کال کنید.

emad4000
دوشنبه 13 شهریور 1385, 09:42 صبح
اینم از Error قبلیش


System.InvalidCastExeption : Unable to cast object of type 'System.Data.DataTable' to type 'Field_ListDataTable'.
at Tabler.Field_DS.InitVars(Boolean init Table)
at Tabler.Field_DS.InitVars();
at Tabler.Field_DS.Clone();
at System.Data.Dataset.GetChanges(DataRowState rowState)


یعنی اگه AcceptChanges رو بردارم خطای بالایی رو میده
ضمنا Tabler اسم namespace مه . Field_DS اسم دیتاستمه و Field_List اسم Table مه
نمی دونم چرا اسم تیبلم رو میاره قبل از عبارت DataTable

omid_Ahmadi
دوشنبه 13 شهریور 1385, 15:48 عصر
احتمالا مشکل از جای دیگه ایه، اگر به صورت عادی دیتا ست رو پر کنید و بعد تغییرات مورد نظرتون رو انجام بدید و متد GetChanges رو کال کنید نباید با مشکلی روبرو بشید.

M_Rahgoshay
سه شنبه 23 مرداد 1386, 10:57 صبح
با سلام

من میخوام مقدار جدیدی بصورت دستی در داخل یکی از فیلدهای دیتاست قرار بدم بعد نمایش بدم .
مقدار جدید وقتی مساوی دیتاست قرار میدهم مشکلی ندارد ولی مقدار نیز تغییر نکرده است.
از دوستان ممنون میشم راهنمائی کنند.