رفع مشکل حذف کردن رکورد

ms_vb

Member
بسم الله الرحمن الرحیم
سلام
مدتی بود که هنگام حذف رکورد با ایراد زیر مواجه میشدم:
کد:
Update requires a valid DeleteCommand when passed DataRow collection with deleted rows.
تا بلاخره مشکل کار را فهمیدم
احتمالا برنامه نویسان دیگری هم با این مشکل مواجه شده اند
اغلب کسانی که این مشکل را دارند متد Delete در tableadaptor آنها نیز وجود ندارد

راه حل برطرف کردن مشکل:

:1: از منوی Data گزینه Show Data Sources را انتخاب کنید

:2: در پنجره DataSource روی Dataset مورد نظر کلیک راست کرده و گزینه Edit Dataset with Designer را انتخاب کنید. با انتخاب این گزینه پنجره Databasename.xsd باز میشود

:3:TableAdapter جدولی را که میخواهید رکوردی را از آن حذف کنید انتخاب کنید

:4:با فشردن کلید F4 وارد پنجره Properties شوید.همانطور که مشاهده میکنید مقدار خاصیت DeleteCommand = (none) می باشد

:5:مقدار New را برای این خاصیت انتخاب کنید.همانطور که مشاهده می کنید مقدار این خاصیت به (DeleteCommand) تغییر یافت

:6:حال روی مثلث کوچک سمت چپ این خاصیت کلیک کنید تا گزینه های فرزند را مشاهده کنید.

:7:گزینه Parameters را انتخاب کرده و سپس روی کلید ... کلیک کنید

:8:به تعداد فیلدهایی که می خواهید Delete نسبت به مقدار آنها انجام گیرد پارامتر اضافه کنید.توجه کنید که خاصیت SourceColumn آنها مساوی نام فیلد مورد نظر باشد
:nokte:در صورتی که از متد DataAdapter.delete استفاده ای ندارید و فقط می خواهید ردیف ها را با شماره آنها با استفاده از Dataset.TableName.Row(i).Delete حذف کنید حداقل باید یک پارامتر تعریف کنید، مهم نیست SourceColumn این پارامتر به کدام فیلد اشاره میکند
:9:حالا مقدار CommandType را به Text ست کنید تا CommandText را بنویسیم

:0::1:CommandText را انتخاب کرده و روی کلید ... کلیک کنید.تا پنجره Query Builder باز شود

:1::1:در پنجره AddTable میتوانید جدول مورد نظر را انتخاب کنید(همان جدولی که Adapter آن را انتخاب کرده اید)

:2::1:در قسمت Column نام فیلد یا فیلدهایی که میخواهید Adapter نسبت به محتویات آنها عمل Delete را انجام دهد را انتخاب کنید.

:3: :1:در قسمت Table هم نام جدول نوشته خواهد شد

:4::1:در قسمت Filter عبارت [CODE]=؟[/CODE] را تایپ کنید

:5::1:برای اطمینان از صحت عملکرد SQL روی دکمه Execute Query کلیک کنید، اگر مشکلی وجود نداشته باشد جدول Query Parameters نمایش داده خواهد شد

:6::1:روی OK کلیک کرده و به قسمت کدنویس بروید

:7::1:حالا مشکل کد نویسی شما حل شده و می توانید از متد TableAdapter.Delete نیز استفاده کنید، انشاالله
:tavajoh:این نوشته ها تجربیات خودم بوده و خواهشا اگر درست و کافی نیست اساتید محترم راهنمایی و تکمیل کنند
 
آخرین ویرایش:

ms_vb

Member
پرکردن اتوماتیک

کسی میدونه چطور میشه این کار رو توسط ویزارد خود ویژوال استدیو به صورت اتوماتیک انجام داد
منظورم تعریف پارامتر ها و کدهای sql است
 

ms_vb

Member
پیدا کردم!
اگر جداولتون رو با برنامه Access درست کرده باشید (فایلهای Mdb و ...) جداولی که فیلد کلید داشته باشند همه قسمتهای آن (delete و Update) توسط ویژوال استدیو خودکار تکمیل میشوند
اگر جدول شما Sql باشد هم باید در جدول فیلد (یا فیلدهای) کلید داشته باشید. اگر در این قسمت به صورت اتوماتیک اطلاعات وارد نشد روی table مورد نظر کلیک کرده و گزینه ...Configure را انتخاب نمایید، حالا روی ...Advanced Options کلیک کنید، حالا گزینه Refresh The Data Table را انتخاب کنید. روی OK کلیک کنید، حالا با زدن کلید Next به صفحه بعد بروید، در این صفحه دقت داشته باشید که گزینه Create Methods to Send Updates directly to the database انتخاب شده باشد، حالا روی Next کلیک کرده و سپس کلید Finish را انتخاب کنید.انشا الله اطلاعات مربوطه پر خواهد شد.
توجه داشته باشید که موارد گفته شده در اولین پست در صورتی که فیلد کلید نداشته باشید (برای SQL) مناسب است
 

جدیدترین ارسال ها

بالا