توجه ! این یک نسخه آرشیو شده می باشد و در این حالت شما عکسی را مشاهده نمی کنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : درست کردن Auto number در VB.net2008
S_O_S
Thursday 14 August 2008, 10:23 PM
سلام
دوستان من می خوام یه فیلد تو دیتا بیسم که sqlserver2005 هستش یه صورت int بگیرم ، وقتی هم از وی بی دات نت بهش متصل می شم ، می خوام کاری کنم که وقتی مثلا اطلاعات جدید تو فیلد های دیگه وارد می کنم ، این فیلد خودش یکی به خودش اضافه کنه ، دقیقا تا اینجا شد شبیه autonumber ولی من می خوام مثلا اگه تا 20 فیلد و وارد کردم ، و فیلد 10 پاک کردم ، دفعه بعد که فیلدی و اضافه می کنم ، به جای اینکه مقدارش 21 بشه مقدار فیلد ذکر شده ، مقدارش بشه 10
کسی می تونه کمکم کنه ؟
command
Friday 15 August 2008, 12:30 AM
بعد از هر حذف
for i=0 to ds.tables(0).rows.count
dr=ds.tables(0).rows.item(i)
dr.item("فیلد مورد نظر")=i
next
mehdima
Friday 15 August 2008, 08:06 PM
سلام
دوستان من می خوام یه فیلد تو دیتا بیسم که sqlserver2005 هستش یه صورت int بگیرم ، وقتی هم از وی بی دات نت بهش متصل می شم ، می خوام کاری کنم که وقتی مثلا اطلاعات جدید تو فیلد های دیگه وارد می کنم ، این فیلد خودش یکی به خودش اضافه کنه ، دقیقا تا اینجا شد شبیه autonumber ولی من می خوام مثلا اگه تا 20 فیلد و وارد کردم ، و فیلد 10 پاک کردم ، دفعه بعد که فیلدی و اضافه می کنم ، به جای اینکه مقدارش 21 بشه مقدار فیلد ذکر شده ، مقدارش بشه 10
کسی می تونه کمکم کنه ؟
بعد از هر حذف
for i=0 to ds.tables(0).rows.count
dr=ds.tables(0).rows.item(i)
dr.item("فیلد مورد نظر")=i
next
با سلام
به نظر میرسه که دوست عزیز command قصد داشتند که مقادیر فیلد مربوطه رو با استفاده از dataset و به ترتیب از 1 تا ... تغییر بدهند. (که البته به اشتباه این کار رو انجام داده اند).ولی کلا این روش عملی نیست چون هنگام درج در پایگاه داده فیلد مربوطه در جدول پایگاه داده به صورت IDENTITYاست در نتیجه با این روش، پیغام خطایی مبنی بر اینکه "نمی توانید مقدار یک ستون که به صورت IDENTITY هست رو به صورت صریح وارد کنید. " دریافت خواهید کرد.
اما روش کار :
شما می توانید قبل از اینکه داده ها را درج کنید خاصیت IDENTITY_INSERT رو به ON تغییر بدهید.در این صورت مقادیر ستون مذکور هم با موفقیت درج می شوند.
برای بدست آوردن مقدار عددی فیلد identity هم که به ازای آن در جدول داده وجود ندارد(قبلا حذف شده) مجبور شدم مقادیر این فیلد را در یک dataset بارگذاری کنم.
نمونه مثال: فکر می کنم کاملا واضح باشه:
با فرض وجود جدولی با نام table2 و با دو فیلد id و name که فیلد id به صورت identity هست.
Dim cn As New SqlConnection(your connection string here)
Dim query As String = "select id from table2"
Dim dp As New SqlDataAdapter(query, cn)
Dim ds1 As New DataSet()
dp.Fill(ds1)
Dim i As Integer = 0
For i = 0 To ds1.Tables(0).Rows.Count - 1
If ds1.Tables(0).Rows(i)("id").ToString() <> (i + 1).ToString() Then
Exit For
End If
Next
query = "SET IDENTITY_INSERT table2 ON ; insert into table2(id,name) values('" + (i + 1) + "','" + txtname.Text + "')"
Dim cmd As New SqlCommand(query, cn)
cn.Open()
cmd.ExecuteNonQuery()
cn.Close()
S_O_S
Monday 18 August 2008, 09:14 PM
سلام
از دوست خوبم آقای mehdima تشکر می کنم ، فقط باید اضافه کنم که باید جدول مورد نظر بر اساس اون فیلد identity مرتب بشه تا همیشه یه عدد رو اعلام نکنه
در هر صورت ممنون
Powered by vBulletin™ Version 4.1.12 Copyright © 2012 vBulletin Solutions, Inc. All rights reserved.