PDA

View Full Version : تغییر خصیصه های یک TableAdapter



piroozman
شنبه 14 شهریور 1388, 09:35 صبح
چگونه می توان خصیصه های یک TableAdapter را در حین اجرا (Runtime) تغییر داد. هر شی TableAdapter دارای خصیصه هایی مانند دستور ات selectcommand ، insertcommand ، parameters و غیره است. بنده می خواهم در حین اجرا برخی از اینها را تغییر بدهم. آیا امکانش هست؟
اصل کاری که می خواهم انجام به شرح ذیل است:
فرض کنیم سه جدول به شرح ذیل در دیتابیس داریم:
1- جدول State : دارای دو ستون : StateId و StateName که ستون StateId به صورت uniqe و ستون StateName به صورت primary key تعریف شده اند
2- جدول City: دارای سه ستون : CityId به صورت Uniqe و ستون های CityName و StateId که دو ستون آخر PK بوده و ستون StateId نیز کلید خارجی از جدول State (جدول شماره 1( می باشد.
3- نهایتا جدول Student: در این جدول ستونی به نام CityId وجود دارد که کلید خارجی از جدول City است به همراه سایر ستونها مانند نام نام خانوادگی و . . . .
جهت درج ID مربوط به شهر محل سکونت هر دانشجو می بایست بر اساس نام استان و نام شهر مقدار CityId از جدول City استخراج شده و در جدول Student درج شود. برای این کار می توان در Sql یک DML به شکل زیر نوشت:


declare @cityId int
select @CityId=CityId from City
Where CityName=N'قم'
and StateId =
(
select stateId from state
where stateName=N'قم'
)
insert into student
(firstname,lastname,cityid)
values ('محمد',
'محمدی پیروز',
@cityId
)

در UpdataCommand مربوط به TableAdapter مر بوط به جدولی از Dataset با نام student دستور updata به شکل زیر است:


insert into student
(firstname,lastname,cityid)
values (@firstname,
@lastname,
@cityId
)

سورس دو پارامتر @firstname و @lastname به دو ستون از sudetn datatable با نامهای firstname و lastname است و می بایست مقدار پارامتر @cityid با استفاده از داده های دو ستون statename و cityname موجود در Sudent datatable محاسبه شده و به insert command داده شود.
حالا مشکل اینجاست که چگونه می توانم با استفاده از فقط خصیصه های خود tableadapter این کار را انجام بدم. لازم به ذکر است دستور Select ای را که در کد اول نوشتم به کد دوم در خصیصه insertcommand مربوط به Tableadapter اضافه کردم ولی اجرا نمی شود. به طوری که پارامترهایی که تعریف کرده ام خود به خود پاک می شود و با خطا مواجه می شوم. اگر ایده ای، نظری دارید بفرمایید ممنون می شم.