PDA

View Full Version : سوال: شماره دهي خودكار



ali-a2
سه شنبه 04 شهریور 1393, 09:32 صبح
با سلام

ميخواستم بپرسم چجوري ميشه برنامه به صورت خودكار به كاربر يه كد بده و با هر ثبت جديد يكي به كد داده شده اضافه بشه ؟
از كد زير استفاده ميكنم ولي ارور ميده !

Adodc1.Refresh
Adodc1.Recordset.MoveLast
Text7.Text = Adodc1.Recordset.Fields!id + 101



دوستان راه بهتري سراغ دارن ؟

با تشكر !

vbhamed
سه شنبه 04 شهریور 1393, 09:46 صبح
سلام
با كد زير مي‌تونيد آخرين كد آزاد رو بگيريد
With Adodc1
.RecordSource = "Select Count(*)+1 As NewCode From TableName"
.Refresh
text7 = Val(.Recordset!NewCode & "")
End With

SlowCode
سه شنبه 04 شهریور 1393, 10:44 صبح
این کد تو یه مورد میتونه مشکل ساز بشه.
فرض کنیم 10 تا رکورد داریم، رکورد شماره 8 رو پاک میکنیم، موقع درج رکورد جدید عددی که این کد به ما میده 10 هست در صورتی که ما قبلا رکوردی با این عدد رو داشتیم، و کد باید عدد 11 رو به ما می داد.
بهتره فیلدی که توش این عدد رو ذخیره میکنی رو به صورت نزولی مرتب کنی و عدد رو از فیلد اول استخراج کنی و بعلاوه یک کنی.

البته خود دیتابیس این امکان رو فراهم کرده، موقع ساخت جدول یک فیلدی میسازی با خاصیت Auto Increment یا همون AutoIncrField میسازی، البته type فیلد باید از نوع Long باشه.

ایلیا آخوندزاده
سه شنبه 04 شهریور 1393, 12:52 عصر
راه دوست عزیز آقای vbhamed اصولی تر هست ولی ساده ترش کد زیر هست :
Text7.Text = Adodc1.Recordset.Fields!id + 1
ولی امکان خطا وقتی که داده ای ثبت نشده باشه بگی نگی هست

vbhamed
سه شنبه 04 شهریور 1393, 19:20 عصر
این کد تو یه مورد میتونه مشکل ساز بشه.
فرض کنیم 10 تا رکورد داریم، رکورد شماره 8 رو پاک میکنیم، موقع درج رکورد جدید عددی که این کد به ما میده 10 هست در صورتی که ما قبلا رکوردی با این عدد رو داشتیم، و کد باید عدد 11 رو به ما می داد.
بهتره فیلدی که توش این عدد رو ذخیره میکنی رو به صورت نزولی مرتب کنی و عدد رو از فیلد اول استخراج کنی و بعلاوه یک کنی.

البته خود دیتابیس این امکان رو فراهم کرده، موقع ساخت جدول یک فیلدی میسازی با خاصیت Auto Increment یا همون AutoIncrField میسازی، البته type فیلد باید از نوع Long باشه.

سلام
مي‌تونيد به جاي تابع Count از تابع Max استفاده كنيد تا اين مشكل هم پيش نياد