raminshahmoradi
دوشنبه 31 مرداد 1390, 17:39 عصر
ضمن عرض سلام و خسته نباشید خدمت اساتید .
قبل از هر چیز از زحمات بی دریغ شما در جهت آموزش و رفع مشکلات کاربران کمال تشکر را دارم .
همان طور که در شکل مشاهده می کنید بانک اطلاعاتی برنامه من Sql 2000 می باشد و با Vb6 برنامه نویسی می کنم .
من در بانک یک جدول برای کشوردارم که دارای دو فیلد به نامهای کد ( که بصورت خودکار عدد میگیرد : Max Record Count ) و فیلد بعدی به نام ( نام ) که نام کشور را ذخیره میکند .
و یک جدول دیگه برای ثبت نام شهر ها دارم که اون هم دارای سه فیلد می باشد :
1 - ردیف
2 - نام کشور
3 - نام شهر
حالا من میخواهم مثلا هر وقت کاربر در جدول کشور نام ( ایران ) تغییر داد متناسب با آن تغییر نام کشور ثبت شده در جدول شهر نیز تغییر کند .
خواستم از خاصیت Relation Ship استفاده کنم ولی به دلیل اینکه در هر دو جدول فیلد ردیف ( Primary ) می باشد . Sql اجازه نمیدهد ( دلیل اینکه فیلد ردیف را کلید اصلی کرده ام این است که میخواهم Sort بر اساس شماره ردیف صورت بگیر نه حروف الفبا ) .
بنا بر این رفتم سراغ Trigger و مشکلم رو حل کردم .
با این کد :
create trigger tr_changekeshvar on keshvar
for update as
declare @oldname nvarchar(50)
declare @newname nvarchar(50)
select @oldname = nam from deleted
select @newname = nam from inserted
update city set namekeshvar = @newname where namekeshvar = @oldname
update phones set cuntry = @newname where cuntry = @oldname
حالا مشکل اصلی :
همه میدانید که این روش ، روش منطقی نمی باشد به این دلیل که در بانک ما فیلدهای تکراری از نوع متنی زیاد شده و به مروز زمان حجم زیادی خواهد گرفت .
من میخواهم بدانم که چگونه مثلاً در وارد نمودن اطلاعات شهر به جای نام کشور ( ردیف نام کشور در جدول مربوطه ) را در جدول شهر ذخیره کنم . ( که البته به کمک ListIndex-1 ) ذخیره میشود . مهم آن است که حالا چگونه در Datagride مربوط به شهر کاری کنم که در فیلد نام کشور به جای عدد وارد شده ، نام کشور متقارن در جدول کشورها را نمایش دهد .
ضمناً من از شیی Adodc استفاده می کنم .
از اینکه متن طوالانی شد عذر میخوام .
قبل از هر چیز از زحمات بی دریغ شما در جهت آموزش و رفع مشکلات کاربران کمال تشکر را دارم .
همان طور که در شکل مشاهده می کنید بانک اطلاعاتی برنامه من Sql 2000 می باشد و با Vb6 برنامه نویسی می کنم .
من در بانک یک جدول برای کشوردارم که دارای دو فیلد به نامهای کد ( که بصورت خودکار عدد میگیرد : Max Record Count ) و فیلد بعدی به نام ( نام ) که نام کشور را ذخیره میکند .
و یک جدول دیگه برای ثبت نام شهر ها دارم که اون هم دارای سه فیلد می باشد :
1 - ردیف
2 - نام کشور
3 - نام شهر
حالا من میخواهم مثلا هر وقت کاربر در جدول کشور نام ( ایران ) تغییر داد متناسب با آن تغییر نام کشور ثبت شده در جدول شهر نیز تغییر کند .
خواستم از خاصیت Relation Ship استفاده کنم ولی به دلیل اینکه در هر دو جدول فیلد ردیف ( Primary ) می باشد . Sql اجازه نمیدهد ( دلیل اینکه فیلد ردیف را کلید اصلی کرده ام این است که میخواهم Sort بر اساس شماره ردیف صورت بگیر نه حروف الفبا ) .
بنا بر این رفتم سراغ Trigger و مشکلم رو حل کردم .
با این کد :
create trigger tr_changekeshvar on keshvar
for update as
declare @oldname nvarchar(50)
declare @newname nvarchar(50)
select @oldname = nam from deleted
select @newname = nam from inserted
update city set namekeshvar = @newname where namekeshvar = @oldname
update phones set cuntry = @newname where cuntry = @oldname
حالا مشکل اصلی :
همه میدانید که این روش ، روش منطقی نمی باشد به این دلیل که در بانک ما فیلدهای تکراری از نوع متنی زیاد شده و به مروز زمان حجم زیادی خواهد گرفت .
من میخواهم بدانم که چگونه مثلاً در وارد نمودن اطلاعات شهر به جای نام کشور ( ردیف نام کشور در جدول مربوطه ) را در جدول شهر ذخیره کنم . ( که البته به کمک ListIndex-1 ) ذخیره میشود . مهم آن است که حالا چگونه در Datagride مربوط به شهر کاری کنم که در فیلد نام کشور به جای عدد وارد شده ، نام کشور متقارن در جدول کشورها را نمایش دهد .
ضمناً من از شیی Adodc استفاده می کنم .
از اینکه متن طوالانی شد عذر میخوام .