ورود

View Full Version : update کردن مقادیر فیلد های یک رکورد



neda_dela
پنج شنبه 12 شهریور 1388, 15:15 عصر
با سلام به دوستان عزیز . این اولین سوال من از جمع دوستان برنامه نویس هست تازه کلی هم تازه کارم و به شدت نیازمند کمک های شما . خواهش می کنم دریغ نکید. ممنون:چشمک::قلب:
حالا سوالم
می خوام رکوردی رو از دیتا گرید انتخاب کنم و دکمه ویرایش رو بزنم اونوقت تک تک مقادیر فیلدهای اون رکورد بره به همون صفحه ای که برای ثبت نام باز می کردم و خالی باز می شد یعنی نخواستم برای ویرایش صفحه جدیدی بسازم. اما با این تفاوت که این بار این صفحه خالی باز نمیشه و مقادیر فیلد های رکورد انتخابی درون کنترل های اون قرار می گیره . تا اینجا درست انجام میشه. حالا من مثلا می خوام فقط نام طرف رو تغییر بدم و ثبت کنم و بقیه رو تغییر نمی دم. اونوقت فرض کنید که مقدار فیلد شغل پدر اون رکورد کارمند ثبت احوال باشه ، وقتی که من فقط اسم رو تغییر می دم و دکمه ثبت رو می زنم خطا می گیره خطاش هم اینه:

incorrect syntax near 'ثبت'

(ببخشید فرمت نوشتن اینجا به هم می خوره)
باید چی کار کنم. در ضمن دستور update رو این طوری نوشتم برای تک تک فیلدها:

update tablename set fieldname ="+مقدار+"
(همین طور برای همه فیلد ها ادامه دادم)

آیا دستور update دیگه ای هم هست که بشه فقط فیلد مورد نظر رو ثبت کنه و از بقیه خطا نگیره؟

Reza_Yarahmadi
پنج شنبه 12 شهریور 1388, 16:20 عصر
کدها رو بصورت زیر امتحان کن ببین درست میشه یا نه!
Update TableName Set FieldName = '"+ Value+"'"
مقدار فیلد رو بین دو تا تک کتیشن ( ' ) قرار بده.(فقط برای فیلدهای که از نوع String هستن)

atryad
پنج شنبه 12 شهریور 1388, 18:23 عصر
دوست عزیز می تونی به روش زیر هم مقدار دهی کنی
http://up.iranblog.com/2/1252001607.jpg

solidilos
پنج شنبه 12 شهریور 1388, 20:32 عصر
سعی کن از همین شروع کار از دستورات پارامتردار استفاده کنی که کلی مزیت داره، یکیشم همینه که اگه تعداد فیلدات زیاد شدن و یا تو فیلدات رشته ای و غیر رشته ای داشتی دیگه مجبور نیستی مراقب تک کوتیشن ها باشی.

neda_dela
جمعه 13 شهریور 1388, 11:38 صبح
کدها رو بصورت زیر امتحان کن ببین درست میشه یا نه!
Update TableName Set FieldName = '"+ Value+"'"
مقدار فیلد رو بین دو تا تک کتیشن ( ' ) قرار بده.(فقط برای فیلدهای که از نوع String هستن)
ممنون دوست عزیز از لطفت
امتحان کردم خطای قبلی رو نمی داد اما باز یه خطای جدید گرفت:


Violation of PRIMARY KEY constraint 'PK_student'. Cannot insert duplicate key in object 'student'.
The statement has been terminated.

فیلد کلیدم رو از لیست فیلد های دستور آپ دیت برداشتم و برنامه رو اجرا کردم اونوقت اولین رکورد رو انتخاب کردم و ویرایش زدم و مثلا نام طرف رو تغییر دادم وقتی به صفحه قبل برگشتم دیدم فیلد های همه رکورد ها رو برابر با هم مقدار دهی کرده غیر از کد ملی شون که کلید بوده و برش داشتم.
حالا چی کار کنم؟

atryad
جمعه 13 شهریور 1388, 13:23 عصر
ممنون دوست عزیز از لطفت
امتحان کردم خطای قبلی رو نمی داد اما باز یه خطای جدید گرفت:

فیلد کلیدم رو از لیست فیلد های دستور آپ دیت برداشتم و برنامه رو اجرا کردم اونوقت اولین رکورد رو انتخاب کردم و ویرایش زدم و مثلا نام طرف رو تغییر دادم وقتی به صفحه قبل برگشتم دیدم فیلد های همه رکورد ها رو برابر با هم مقدار دهی کرده غیر از کد ملی شون که کلید بوده و برش داشتم.
حالا چی کار کنم؟
با سلام شما موقع آپدیت رکوردها هیچ محدودیتی برای اون تعریف نکردید و تمام رکوردها ویرایش شده میتونید از یک شرط برای آپدیت استفاده کنید تا فقط رکوردهایی رو که شامل همون شرط هستن رو ویرایش کنه از where میتونی استفاده کنی
where codemeli='111111111 '
n

mn_zandy63
جمعه 13 شهریور 1388, 23:29 عصر
فیلد کلید رو از لیست فیلدهایی که مقدار دهی کردی برداشتی یا از Where؟

وقتی فیلد کلید رو از شرط برمیداری معنیش اینه که همه فیلدها رو به این شکل مقدار دهی کن.
(در واقع وقتی هیچ شرطی نذاری).

علت خطایی هم که نوشتی اینه که فیلد کد ملی رو داری به چیزی تغییر میدی که قبلا توی دیتابیست وجود داره.

کل Query ت رو بذار اینجا ببینیم.
وقتی میخوای Code کپی کنی، از قسمت بالای این editor، آیکونی رو که به شکل # هست انتخاب کن و بعد کدت رو وسط دو تا تگ بنویس.