نقل قول: مشکل در UPDATE رکورد
خب معلومه که باید اررور بده . چون فیلد code (اگه اشتباه نکنم) کلید اصلیه واسه update نباید دوباره فیلد کد رو بفرسدی واسه update فقط کد رو بفرست برای where .
objCommand.CommandText = "update tbuy set name=@name," +
"model=@model,manufacturer=@manufacturer,sn=@s n," +
"country=@country,price=@price,count=@count," +
"date=@date,description=@description where code=code";
نقل قول: مشکل در UPDATE رکورد
دوست عزیز در صورتیکه میخواید کد (که کلید اصلی هم هست) رو تغییر باید کد قدیم و کد جدید رو با هم داشته باشید.
توی دستوری که نوشتید(دستور اول) بر اساس کدی که واسش میفرستید جستجو انجام میشه ، اگر کد ، کد جدید باشه خب رکوردی با این کد ندارید که بتونه اونو پیدا کنه و تغییر بده. در صورتی هم که پیدا کنه شما کد رو به همون مقدار خودش تغییر میدید(در واقع تغییری نمیدید). دستور دوم هم با قبلی فرقی نمیکنه. تغییر سوم هم چون به ازا هر رکورد شرط Code = Code درست است برای تمام رکوردها میخواد تغییرات رو اعمال کنه که بالطبع بدلیل اینکه کد باید یونیک باشه بهتون خطا میده.
روش کار به این صورته که شما باید بر اساس کدقدیم جستجو کنید و کد رو با کدجدید مقدار دهی کنید.
Update tbuy Set Code = @NewCode Where Code = @OldCode
نقل قول: مشکل در UPDATE رکورد
متشکر از دوستان عزیز
ولی متوجه نمیشم که چه طور کد قدیم و کد جدید رو از هم تفکیک کنم
اگه یک نمونه کد کاملتر بگذارید ممنون میشم
نقل قول: مشکل در UPDATE رکورد
متشکر میشم اگه دوستان راه حلی بدن
نقل قول: مشکل در UPDATE رکورد
اگه نمیخوای Code تغییر کنه اون رو از لیست SET بردار و فقط تو Where بزار باشه
اگه میخوای Code هم تغییر کنه بیا مقدار جدید Code رو تو SET بزار و مقدار قبل رو تو Where
اگه مورد دوم هست باید از این
objCommand.Parameters.AddWithValue("@code", txtCode.Text);
دو تا تعریف کنی که @code و txtCode.Text رو باید تغییر بدی
نقل قول: مشکل در UPDATE رکورد
میخوام کد تغییر کنه ولی مقدار جدید و قدیم رو نمیدونم چه جوری تفکیک کنم کد بالا رو هم اگه کاملش رو بزارید خیلی لطف کردید
نقل قول: مشکل در UPDATE رکورد
یه رشته به اسم OldC درست کن و مقدار فعلی Code رو بریز داخلش
objCommand.CommandText = "update tbuy set code=@Newcode,name=@name," +
"model=@model,manufacturer=@manufacturer,sn=@s n," +
"country=@country,price=@price,count=@count," +
"date=@date,description=@description where code=@Oldcode";
اینم اضافه کن
objCommand.Parameters.AddWithValue("@Oldcode", OldC);
نقل قول: مشکل در UPDATE رکورد
من اصلا متوجه این کدی که گذاشتید نمیشم اگه لطف کنید C# کنید ممنون میشم فکر کنم بین تگ C# نذاشتید
در ضمن نمیدونم که چه جوری به یک فیلد دسترسی داشته باشم تا بتونم اون فیلد رو تو OldC بزارم
نقل قول: مشکل در UPDATE رکورد
آره ، نمیدونم چرا کد اسنطور نشون داده میشه
مقداری رو که تو شرط
WHere Code = @code
قرار دادی از کجا خوندی؟
مقدار OldC میشه همون مفدار شرط (یعنی Where Code = @Code)و مقدار جدیدت هم میشه مقداری که توی SET گذاشتی (یعنی Set Code = @Code)
ولی نباید هر دو به یه اسم باشن
میتونی Code@ رو به دو اسم دیگه تعریف کنی برا اولی NewCode@ و برا دومی OldCode@
"SET Code = @NewCode Where Code = @OldCode
objCommand.Parameters.AddWithValue("@OldCode", OldC);
objCommand.Parameters.AddWithValue("@NewCode", txtCode.Text);
نقل قول: مشکل در UPDATE رکورد
بزار اصلا کاملتر توضیح بدم
من چند تا تکست باکس روی فرمم دارم که داده های توی بانک رو توش با کدی که نوشتم نشون میده و با کلید هایی رکورد به جلو یا عقب هم میره ولی در update کردن فیلد کد به مشکل برخوردم و نمیدونم که مقدار داخل فیلد code که در بانک sql هستش رو چه جوری در یک متغییر بزارم
نقل قول: مشکل در UPDATE رکورد
لطفا یکی بگه چه جوری میتونم به یک فیلد دسترسی داشته باشم
مثلا بگم اگر فیلد code برابر با فلان مقدار بود
اگر یک نمونه کد بزارید ممنون میشم
نقل قول: مشکل در UPDATE رکورد
یه کار راحت تر
یه رشته به اسم OldCode درست کن
حالا که مقادیر رو به textBox منتقل می کنی بیا زمانی که txtCode رو مقدار میدی OldCode رو هم مقدار دهی کن مثلا
txtCode.text = OldCode = ???;
که ؟؟؟ روشی هست که الان داری مقدار میدی
بعد بیا تو شرط Update مقدار OldCode رو بزار
SET Code = txtCode WHERE Code = OldCode
البته این کد رو باید درست کنی
نقل قول: مشکل در UPDATE رکورد
اگه بازم نشد بگو
اگرم خواستی فایل کد فرم رو بزار تا درستش کنم برات