PDA

View Full Version : سوال: پروسیجر ویرایش



amir.yousefi
جمعه 31 مرداد 1393, 07:03 صبح
سلام
من برای عمل ویرایش در پایگاهم یک پروسیجر نوشتم و کدملی را به عنوان کلید اصلی جدول،در پایگاهم قرار دادم.
حالا که دستور را اجرا می کنم،تمامی فیلدها به جز کدملی ویرایش می شوند.
میخواستم بدانم که چرا کد ملی در این برنامه ویرایش نمی شود؟ :متفکر:
تصاویر لازم را ضمیمه میکنم:
(با این توضیح که اگر کاربر بر روی یکی از سطرهای دیتا گرید دابل کلیک کند،داده ها دوباره به تکست باکس ها بر می گردند تا ویرایش شوند و بعد از اینکه تغییراتی دادیم،اگر دکمه ویرایش را بزنیم تغییرات اعمال می شود البته همان طورکه گفتم کد ملی دست نخورده باقی می ماند)





122523122522

Davidd
جمعه 31 مرداد 1393, 08:33 صبح
کد ملی کلید اصلیه و برای ویرایش ، رکورد مورد نظرو بر اساس کد ملی پیدا می کنی و ویرایش می کنی. اگه کد ملی توسط کاربر ویرایش بشه چون توی جدول این کد ملی احتمالا وجود نداره هیچ رکوردی پیدا نمیشه (شرط Where ارضا نمیشه) برای مثال فردی با شماره ملی 1 میخای ویرایش کنی و کاربر کد ملی تغییر میده و 2 انتخاب می کنه, این کوئری فردی با شماره ملی 2 رو میخاد ویرایش کنه که یا وجود نداره و یا وجود داره فرد دیگریه و به اشتباه ویرایش میشه.
- کد ملی شناسه فرد هست و منطقی نیست کد ملی فرد ویرایش بشه. اگر هم نیاز به ویرایش هست باید مقدار قبل از ویرایش یه جایی ذخیره بشه و شرط Where روی مقدار قبلی باشه نه مقدار ویرایش شده.

اسماعیل ابراهیمی
جمعه 31 مرداد 1393, 16:16 عصر
با تشکر از دوست خوبم
deldadeh108 (http://barnamenevis.org/member.php?313434-deldadeh108) بابت توضیحات کاملش

الان چون حدس می زنم شما وسط های کار باشین
یه مثال بر اساس شرایط موجود شما می زنم


UPDATE table1 SET field1=value1 , codemeli=codemeli_jadid WHERE codemeli=codemeli_ghadim


شما وقتی که کاربر دکمه ویرایش رو میزنه (کلا آخرین زمان قبل از شروع ویرایش اطلاعات) کد ملی فعلی رو به عنوان کد ملی قدیم رکورد (برای قسمت شرط دستور ویرایش) یه جایی مثل متغیر ذخیره کن و بعد از اینکه کاربر اطلاعات رو ویرایش کرد و روی دکمه ذخیره تغییرات زد کد ملی جدید میشه همون فیلد کدملی و کد ملی قدیم میشه اون چیزی که ذخیره کردین

Good Luck

محمد آشتیانی
جمعه 31 مرداد 1393, 16:32 عصر
سلام
بهترین حالت اینه که کد ملی کلید اصلی نباشه ، شما اگر یه فیلد Identity داشته باشی و اون کلید اصلیت باشه منطقی تره. (ضمن اینکه موقع Insert و Update چک میکنی که کد ملی که وارد میشه از قبل موجود نباشه).




موفق باشید.