PDA

View Full Version : دیتاست و اضافه نشدن ردیف



kazex
یک شنبه 24 تیر 1386, 21:21 عصر
با سلام من یک دیتاست طسی با ابزار دات نت2005 درست کردم و درون آن یک TableAdapter گذاشتم حال وقتی با استفاده از کدی زیر می خواهم یک ردیف اضافه کنم ردیفی به وجود نمی آید.(از Access استفاده میکنم)

(SRDS نام دیتاست ساخته شده است.)




SRDS srds = new SRDS();
srds.RegisterTable.AddRegisterTableRow("", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "");
srds.AcceptChanges();



مشکل چیست؟

mehdi.mousavi
سه شنبه 26 تیر 1386, 20:42 عصر
با سلام من یک دیتاست طسی با ابزار دات نت2005 درست کردم و درون آن یک TableAdapter گذاشتم حال وقتی با استفاده از کدی زیر می خواهم یک ردیف اضافه کنم ردیفی به وجود نمی آید.(از Access استفاده میکنم)
(SRDS نام دیتاست ساخته شده است.)

SRDS srds = new SRDS();
srds.RegisterTable.AddRegisterTableRow("", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "");
srds.AcceptChanges();

مشکل چیست؟


سلام.
کدی که شما نوشتید، یک نمونه از دیتاست ایجاد میکنه، row مورد نظر شما رو به جدول Register اضافه میکنه (دقت کنید که دیتاست یه کپی disconnected از بانک در حافظه هستش) و با فرمان AcceptChanges، وضعیت row رو از modified به current تغییر می ده. این بدین معنی هستش که انگار از اول اون row در جدول بوده.

کدی که باید بنویسید:
قبل از صدا زدن AcceptChanges، باید روی TableAdapter اتون متود Update رو صدا بزنید تا تغییرات (شامل row هایی با وضعیت added، modified و deleted) در بانکتون (یعنی access) هم به روز بشه. به این ترتیب متود Update، بعد از انجام موفقیت آمیز هر یک از سه عمل modification، adding و deletion رکوردهای متناظر رو به current state تغییر میده. پس اصلا نیازی به صدا زدن AcceptChanges نیست.

کار با DataSet زیر و بم های بسیار زیادی داره و محدود به استفاده از متودهای تولید شده خودکار توسط کامپایلر نمیشه. اگه استفاده از دیتاست ها رو در برنامه هاتون انتخاب کرده اید، (برای نگهداری Business Entity ها)، مطمئن بشید که اونها رو خوب فهمیدید و به تمام کم و کاستیها و نقاط قوت اون تسلط دارید.