PDA

View Full Version : On کردن Identity_Insert



emad4000
سه شنبه 21 شهریور 1385, 02:44 صبح
سلام
من یه دیتابیس دارم که یه جدول با یه ستون Identity داره
توی یه قسمت از برنامه ام محتویات این جدول رو توی یه دیتاگرید نمایش می دم . حالا وقتی که یه رکورد به این DataGridView اضافه می کنم و دستور SqlDataAdapter.Update(DataSet); رو اجرا می کنم پیغام میده که باید خاصیت IDENTITY INSERT جدولم رو ON کنم
من توی MSDN همچین دستوری پیدا کردم
SET IDENTITY_INSERT table_name ON
اینو توی QueryAnalyzer نوشتم و اتفاقا پیغام Successfull داد ولی مشکل حل نشد
اگه میشه راهنماییم کنین
ممنون

H_Ghaffarian
شنبه 25 شهریور 1385, 08:23 صبح
سلام
تا اونجا که خاطرم هست مقادیر ستونهای Identity یکتاهستند و توسط خود سرور و نه کاربر مقدار می گیرند. بنابراین شما نباید مقادیر این ستونها رو بروز رسانی کنید. در صورتی که بخواهید می تونید کد معادلی رو بنویسید که بتونه هر دفعه یک مقدار جدید که یکی بیشتر از قبلیه باشه رو بنویسید. با این کار شما هر زمان که بخواهید می تونید عدد بدست اومده رو درصورت رعایت یکتایی(برای فیلدهای کلید) عوض بکنید.

javad3151
یک شنبه 26 شهریور 1385, 08:13 صبح
Identity در واقع مثل AutoNumber در اکسس هست . معمولا PK جدول رو از Identity می کنند که خودش اتوماتیک یه شماره یکتا توی هر رکورد شما می نویسه. فکر کنم شما هم اگر این کار رو بکنید مشکلتون حل میشه

h_baqery
یک شنبه 26 شهریور 1385, 14:35 عصر
در فیلدهایی که Insert می کند فیلد Identity رو نباید مقدار دهی کنید . چون SQL خودش اون مقدار رو تعیین می کنه . از دستور Insert فیلد dentity رو حذف کنید .

emad4000
سه شنبه 28 شهریور 1385, 23:58 عصر
در فیلدهایی که Insert می کند فیلد Identity رو نباید مقدار دهی کنید . چون SQL خودش اون مقدار رو تعیین می کنه . از دستور Insert فیلد dentity رو حذف کنید .

یعنی منظورتون اینه که به صورت دستی فیلد Identity رو از InsertCommand آداپترم حذف کنم ؟؟؟ اگه منظورتون اینه که باید بگم کامنهای آداپتر من در طول اجرای برنامه و توسط CommandBuilder ساخته میشن . من چه طوری این فیلدم رو ار کامنها پاک کنم ؟؟؟

h_baqery
چهارشنبه 29 شهریور 1385, 10:50 صبح
من توی ASP فیلدهای اضافی که اتوماتیک ساخته می شن رو به راحتی از داخل InsertCommand مربوط به SQLDATASOURCE پاک می کنم .نمی دونم با چه برنام ای کار می کنید ولی حتما لیست فیلدهایی که قرار است insert شود رو یه جایی می نویسه .

emad4000
چهارشنبه 29 شهریور 1385, 23:58 عصر
اینو که می دونم . ولی کد من در طول اجرای برنامه ساخته میشه . از توی محیط ویژوال می تونم فیلد موردنظرم از InsertCommand حذف کنم ولی حذف اسم فیلد وقتی که خود Command رو نمی بینی کار سختیه . ممکنه Command به هم بریزه . حالا سعی میکنم . ممنون از راهنماییتون