PDA

View Full Version : درج خودکار شماره



smderfan
جمعه 17 خرداد 1387, 16:10 عصر
سلام
یک جدول بنام Bank ایجاد کرده ام که شامل یک فیلد بنام ID هست و مقدار ID عدد است مثلا ده رکورد ایجاد شده که مقدار فیلد ID اعداد 1 تا 10 هست حالا می خوام وقتی یک عدد بین 1 تا 10 برای ثبت در فیلد ID انتخاب شد بقیه به اندازه یک واحد افزایش پیدا کنند.
برای نمونه :
یک رکورد جدید که مقدار فیلد ID رو برابر 3 انتخاب کردیم چون 3 قبلا ثبت شده از 3 تا 10 یک واحد افزایش پیدا کنه یعنی 3 قدیمی تبدیل به 4 و 3 جدید جایگزین بشه و بقیه رکوردها نیز به همین صورت روند افزایش رو داشته باشند .... 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11
در آخر اگر دقت کنید باید آخرین مقدار 10 به 11 تغییر پیدا کنه.
ضمناً مقدار فیلد ID روند ترتیبی رو داره یعنی اینطور نیست که یک مقدار جا افتاده باشه و روند همیشه افزایشی است.
با سپاس

e601
جمعه 17 خرداد 1387, 17:35 عصر
میتونی از این روش استفاده کنی:


Public Function RefreshNumbers(IDNumber As Double)

Dim dbs As Database
Set dbs = CurrentDb

With dbs
.Execute "UPDATE Back SET Back.ID=Back.ID+1 WHERE Back.ID>=" & IDNumber & ";"
.Execute "INSERT INTO Back(ID) VALUES(" & IDNumber & ");"
End With

MsgBox "Completed"

End Function

منتها 2 تا مسئله هست. یکی اینکه با انجام این عملیات عدد جدیدت به آخرین رکوردت اضافه میشه که میتونی روی جدول Back یک ایندکس بذاری تا در فیلد ID ترتیب عددها حفظ بشه. یکی هم اینکه میتونی Msgbox رو از آخر کد حذف کنی. من اونو صرفا واسه اینکه متوجه بشی عملیات تموم شده گذاشتم