PDA

View Full Version : تغییرات صورت گرفته در DataSet



aidinwashere
دوشنبه 09 مرداد 1385, 08:55 صبح
با سلام.
فرض کنید در DataGridای که یک DataTable را نمایش میدهد تغییراتی اعمال کرده ایم، چند سطر را حذف و یا اضافه کردایم، برای update کردن بانک، چگونه میتوان این تغییرات را بدست آورد؟
با getChanges فقط تغییراتی که در Cell های dataGrid رخ داده باشد بدست میآید.
با احترام.

ghafoori
دوشنبه 09 مرداد 1385, 10:41 صبح
متد GetChanges شی datatable یک جدول از تغییرات را که به شما میدهد

علیرضا مداح
دوشنبه 09 مرداد 1385, 19:01 عصر
سلام دوست عزیز
متد GetChanges دارای آرگومانی میباشد که یکی از مقادیر ثابت شمارشی DataRowState را دریافت کرده و بر اساس آن سطرهای تغییرداده شده را بصورت یک DataSet در اختیار شما قرار میدهد .

aidinwashere
سه شنبه 10 مرداد 1385, 04:29 صبح
با تشکر از جوابتون میشه بیشتر توضیح بفرمایید؟ مثلا مقادیر ثابت شمارشی چیست؟

Behrouz_Rad
سه شنبه 10 مرداد 1385, 08:27 صبح
مقادیر ثابت شمارشی، مقادیر ثابت و از پیش تعریف شده ای هستند که یک آرگومان تنها اونها رو می پذیره...
برای متد GetChanges، این مقادیر شامل:


Added
Deleted
Detached
Modified
Unchanged

هستند.
به عنوان مثال، تکه کد زیر، یک دیتاست با نام dsModified با مقادیر اصلاح شده در دیتاست Ds را بر می گرداند:


if (ds.HasChanges()) Then
Dim dsModified As DataSet = ds.GetChanges(DataRowState.Modified)

نکته 1: همیشه متد HasChanges رو قبل از متد GetChanges برای مطمئن بودن از تغییرات در دیتاست اصلی فراخوانی کن.
نکته 2: در صورتی که هیچ تغییری در دیتاست اصلی رخ نداده باشه، مقدار null برگشت داده میشه. با دستور "Is Nothing" این مورد رو چک کن.

موفق باشید.

aidinwashere
سه شنبه 24 مرداد 1385, 22:09 عصر
حالا میشه با این DataTable بدست اومده، با command های تولید شده commandBuilder بانک رو update کرد؟
به نظر من که نمیشه.

Milad Mohseny
چهارشنبه 25 مرداد 1385, 00:38 صبح
http://www.barnamenevis.org/forum/showthread.php?t=49837&highlight=%C7%DA%E3%C7%E1+%CA%DB%26%231740%3B%26%2 31740%3B%D1%C7%CA%26%231740%3B+%98%E5+%CF%D1+DataG ridView+%D5%E6%D1%CF%CA+%E3%26%231740%3B%90%26%231 740%3B%D1%E5+%C8%E5+%CC%CF%E6%E1

aidinwashere
چهارشنبه 25 مرداد 1385, 13:26 عصر
مرسی دوست من، ولی فکر کنم سؤال رو درست متوجه نشدی.
من میخوام این جدول جدیدی که از تغییرات بدست اومده رو روی dataSet اصلی اثر بدم و از اونجا به بعد میشه با کاری که گفتی، Database رو آپدیت کرد.
مرسی.

maalimo_az
چهارشنبه 25 مرداد 1385, 22:05 عصر
OleDbCommandBuilder br = new OleDbCommandBuilder(da);
da = br.DataAdapter;
da.Update(ds, "code_ing1");
da نام دیتا آداپتور هست code_ing1 نام جدول من در اکسس
کافیست با دیتا آداپتور دیتا ست را پر کنی و آن را با دیتا گرید binding کنی
همین خداحافظ

aidinwashere
پنج شنبه 26 مرداد 1385, 01:37 صبح
دوست من!
کارکردن با CommandBuilder رو میدونم
فکر کنم سؤالم رو یه بار دیگه بخونی بد نباشه.
مرسی.

emad4000
پنج شنبه 02 شهریور 1385, 12:12 عصر
مقادیر ثابت شمارشی، مقادیر ثابت و از پیش تعریف شده ای هستند که یک آرگومان تنها اونها رو می پذیره...
برای متد GetChanges، این مقادیر شامل:


Added
Deleted
Detached
Modified
Unchanged

هستند.
به عنوان مثال، تکه کد زیر، یک دیتاست با نام dsModified با مقادیر اصلاح شده در دیتاست Ds را بر می گرداند:


if (ds.HasChanges()) Then
Dim dsModified As DataSet = ds.GetChanges(DataRowState.Modified)

نکته 1: همیشه متد HasChanges رو قبل از متد GetChanges برای مطمئن بودن از تغییرات در دیتاست اصلی فراخوانی کن.
نکته 2: در صورتی که هیچ تغییری در دیتاست اصلی رخ نداده باشه، مقدار null برگشت داده میشه. با دستور "Is Nothing" این مورد رو چک کن.

موفق باشید.

سلام دوست عزیز
من وقتی مقادیر ثابت شمارشی رو با متد getchanges می فرستم Error می گیره
الان یادم نیست ارورش چی بود ولی به هر حال کار نمی کنه ( دفعه دیگه با خودم میارمش )
شما حدس نمی زنید مشکل چیه که کار نمی کنه ؟؟؟


دوست من!
کارکردن با CommandBuilder رو میدونم
فکر کنم سؤالم رو یه بار دیگه بخونی بد نباشه.
مرسی.

ضمنا در مورد شما هم فکر کنم شما سوالتونو بد مطرح کردین
چون من هم هرچی می خونم می بینم جواب داده شده

وقتی دیتاسورس یک DataGrid رو به یک DataTable بایند می کنید دیگه هر تغییری که در دیتاگرید صورت بگیره در دیتاتیبل هم اعمال می شه و متد getchanges دقیقا تغییرات دیتاتیبل رو برمی گردونه

engineer_comp
شنبه 04 شهریور 1385, 10:33 صبح
با عرض سلام
می خواستم بپرسم چطوری می تونم یک Item مورد نظر را در DataSet تغییر بدم و تغییرات اعمال شده را در بانک اطلاعاتی ذخیره کنم
خاصییت Rows در نرم افزار من خاصییت Item رو نداره...

emad4000
دوشنبه 06 شهریور 1385, 11:06 صبح
فک کنم می بایست از خصوصیت ItemArray استفاده کنی
ضمنا شاید بدونی که خصوصیت rows در صورتی دارای خصوصیت ItemArray ه که اندیسشو مشخص کرده باشی یعنی به این صورت



DataSet.Tables["MyTable"].Rows[RowIndex].ItemArray["ColumnName"]

engineer_comp
چهارشنبه 08 شهریور 1385, 07:19 صبح
فرض کنید که یک فیلدی از جدول را به یک textBox مقید کردیم در این صورت اگر کاربر محتویات آن را تغییر دهد چطور می تونم Dataset رو تقییر بدم و تغییرات رو در بانک اطلاعاتی ذخیره کنم
لطفا هر کی بلده کد های لازم رو بنویسه

emad4000
سه شنبه 21 شهریور 1385, 23:38 عصر
اگه بیشتر توضیح بدین شاید بتونم کمکتون کنم
شما از دیتاست چه طور استفاده کردین . آیا textbox تون به دیتاست Bind شده ؟؟؟

engineer_comp
یک شنبه 26 شهریور 1385, 11:42 صبح
بله textbox به دیتاست bind شده
منظور من این بود که بدون نوشتن کد آیا در هنگام اجرای برنامه با تغییر محتویات textbox خود به خود محتویات دیتاست هم تغییر می کنه یا نه؟

once4ever
یک شنبه 26 شهریور 1385, 14:05 عصر
منظور من این بود که بدون نوشتن کد آیا در هنگام اجرای برنامه با تغییر محتویات textbox خود به خود محتویات دیتاست هم تغییر می کنه یا نه؟
خیر
باید با دستور اضافه کنید

ds.AcceptChanges();