PDA

View Full Version : خطای identity



qqq2qqq
یک شنبه 23 خرداد 1389, 08:29 صبح
سلام
من این کد ها رو برای insert کردن به دیتابیس library (جدول ozv) نوشتم اما موقع ثبت به من خطای این identity-insert رو می ده
Dim strcon As String = "data source=localhost;initial catalog=library;integrated security=true"
Dim cn As New SqlConnection(strcon)
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim cominsert As New SqlCommand
cominsert.Connection = cn
cominsert.CommandText = "insert into ozv values(@t2,@t3,@t4,@t5,@t6,@t7,@t8)"
'cominsert.Parameters.AddWithValue("@t1", Me.txtcodeozv.Text)
cominsert.Parameters.AddWithValue("@t2", Me.txtnameozv.Text)
cominsert.Parameters.AddWithValue("@t3", Me.txtfamilyozv.Text)
cominsert.Parameters.AddWithValue("@t4", Me.txtFnameozv.Text)
cominsert.Parameters.AddWithValue("@t5", Me.txtFnameozv.Text)
cominsert.Parameters.AddWithValue("@t6", Me.txtcodemeliozv.Text)
cominsert.Parameters.AddWithValue("@t7", Me.txttdateozv.Text)
cominsert.Parameters.AddWithValue("@t8", Me.txtadresozv.Text)
cn.Open()
cominsert.ExecuteNonQuery()
cn.Close()
End Sub

این هم خطایی که می گیره
An explicit value for the identity column in table 'ozv' can only be specified when a column list is used and IDENTITY_INSERT is ON.
در ضمن فیلد اول من identity هست اگر هم تو فیلد های insert نیارمش باز هم این خطا رو به من می ده

spring69
یک شنبه 23 خرداد 1389, 08:58 صبح
سلام.
یعنی اگر بعد از اسم جدولتون اسم فیلدهاتون رو (بجز فیلد identity) بنویسید باز ارور میده؟
مثلا به این شکل:


insert into ozv(f1,f2,f3) values(@t1,@t2,@t3)

DoDoklak
یک شنبه 23 خرداد 1389, 09:03 صبح
به احتمال زیاد فیلد کلید شما از نوع AutoNumber نیست و فقط یک کلید معمولی است.
جهت انجام اینکار باید به بخش طراحی تیبل برید و فیلد کلید را انتخاب کنید ودر بخش پایین یعنی
Column Properties
گزینه
Identity Specefication
رو برابر Yes قرار بدید

تست کنید اگه حل نشد دوباره ادامه میدیم

qqq2qqq
یک شنبه 23 خرداد 1389, 13:09 عصر
identity برابر yes هست اما باز این خطا رو می ده
لطفا یکی کمکم کنهههههههههههههههههه
در ضمن من اگه بخوام آخرین مقدار رو به صورت اتوماتیک بهم بده که من بتونم اون رو تو textbox1 بذارمش باید چکار کنم؟مراحل کاملش رو بگین مثلا select id max(id) from ozv رو باید کجا بنویسم

Open-Source
یک شنبه 23 خرداد 1389, 13:39 عصر
اگه فیلد شما از جنس Identity باشه، بعد از درج یه رکورد، به صورت Auto پر میشه؛ پس نیازی به مقدار دهی به اون فیلد نیست.

برای به دست آوردن آخریم مقدار Identity توی SQL از @@Identity استفاده کن(همین کلمه رو توی فروم یه سرچ بزن).

DoDoklak
یک شنبه 23 خرداد 1389, 16:18 عصر
مشکل شما در این دستوره

insert into ozv values(@t2,@t3,@t4,@t5,@t6,@t7,@t8

چون اسم فیلدها رو مشخص نکرید به صورت پیش فرض تمام فیلدها مقدار دهی میشن حتی کلید
دستور رو اینجوری بازنویسی کنید



insert into ozv (t2,t3,t4,t5,t6,t7,t8) values (@t2,@t3,@t4,@t5,@t6,@t7,@t8)