PDA

View Full Version : Update DataAdapter



ehsan_ansaripoor
شنبه 13 مرداد 1386, 16:58 عصر
با سلام به همه دوستان
بنده از VB8 استفاده می کنم و با منابع ODBC کار می کنم.
زمانی که از DataAdapter اطلاعات را Fill می کنم به DataSet و تغییراتی مثل Delete یا Edit بر روی رکوردها انجام می دهم زمانی که می خواهم


Me.OleDbDataAdapter1.Update(Me.DataSet11.Table1)

برای Insert خطا نمی ده ولی برای delete و Edit خطا می گیره.
البته دستورات Sql مربوط به UpdateCommand و DeleteCommand را هم می نویسم ولی باز هم Error میده

asilverisis
یک شنبه 14 مرداد 1386, 01:14 صبح
سلام
لطفا متن error رو بذارید.

ehsan_ansaripoor
دوشنبه 15 مرداد 1386, 00:31 صبح
دوست عزیز زمانی که هنوز دستورات SQL مربوط به Update و Delete را وارد نکردم


Update requires a valid DeleteCommand when passed DataRow collection with deleted rows.

و زمانی که دستورات را وارد می کنم برای حذف یا تغییر رکوردی که تمام شاخص هایش مثل هم باشه با هم Update یا Delete می کنه.
مثلا:
Name='a',family='b',bed=1
Name='a',family='b',bed=1
زمانی که a را به x تغییر می دهم این دو رکورد تغییر می کنه.

omidmehraban
دوشنبه 15 مرداد 1386, 01:18 صبح
با سلام دوست عزیز:
1-مطمئن بشید که جدولی که با اون کار می کنید Primary Key داره.
2-بعد از تعریف شی OleDbCommand دستور زیر را بنویسید:

Dim myCommandBuilder As New OleDb.OleDbCommandBuilder(myDataAdapter)
این دستور باعث میشه تا DeleteCommand و UpdateCommand اتوماتیک ساخته شوند.
برای ذخیره تغییرات فقط باید متد Update از DataAdapter را فراخوانی کنید.

asilverisis
دوشنبه 15 مرداد 1386, 01:55 صبح
سلام



زمانی که دستورات را وارد می کنم برای حذف یا تغییر رکوردی که تمام شاخص هایش مثل هم باشه با هم Update یا Delete می کنه.
مثلا:
Name='a',family='b',bed=1
Name='a',family='b',bed=1
زمانی که a را به x تغییر می دهم این دو رکورد تغییر می کنه.


به نظر شما مگه این قضیه مشکلی داره ؟ چیزی که می فرمایید کاملا منطقیه، اگر با هم Update یا Delete نشن اشکال داره، شما باید ساختار جدولتون رو تغییر بدید یا اینکه حداقل یک وجه تمایزی بین دو رکورد قائل بشید.

موفق و موید.

choobin84
دوشنبه 15 مرداد 1386, 07:56 صبح
با سلام دوست عزیز:
1-مطمئن بشید که جدولی که با اون کار می کنید Primary Key داره.
2
ضرورتی نداره که یک فیلد کلید اصلی باشه.
برای حل این مشکل کافیه فقط دو یا چند رکورد مساوی نداشته باشیم.

ehsan_ansaripoor
دوشنبه 15 مرداد 1386, 15:46 عصر
با عرض سلام مجدد به دوستان عزیزم و تشکر از اینکه به این تاپیک توجه کردند.
مساله اینجاست که من داخل جدولم رکوردیهایی قرار می گیره که ممکنه شبیه هم باشه و نمی توانم ریسک کنم از طرف دیگر استفاده از یک فیلد اضافی برام دردسر سازه.
می خواستم ببینم راه حلی وجود نداره که برای کارهای ساده ای مثل حذف و تغییر نخوام اینا همه دغدغه فیلد اضافی داشته باشم و مثل VB6 راحت این کار را انجام بدم.

sama01
دوشنبه 16 مهر 1386, 07:00 صبح
چرا یک فیلد مخصوص یک ID‌ منحصر به فرد ایجاد نمی‌کنید؟ حتی اگر این فیلد توسط برنامه‌نویسی خودتان پر بشه. با این کار با خیال راحت می‌توانید رکورد مورد نظر را ویرایش و یا حذف کنید. این کار یک روش کاملا منطقی و معمول در برنامه‌نویسی پایگاه داده است.