PDA

View Full Version : بدست آوردن عدد بعدی AutoNumber



once4ever
سه شنبه 25 اردیبهشت 1386, 14:43 عصر
میخوام عدد بعدی فیلد AutoNumber با کد بدست بیارم

majid325
چهارشنبه 26 اردیبهشت 1386, 00:10 صبح
با کوئری max بزرگترین عدد فیلد رو بدست بیار و بعد یکی به اون اضافه کن.

once4ever
چهارشنبه 26 اردیبهشت 1386, 10:02 صبح
با کوئری max بزرگترین عدد فیلد رو بدست بیار و بعد یکی به اون اضافه کن.
اگه آخرین رکورد حذف شده باشه , اشتباه میشه

saeid5977
چهارشنبه 26 اردیبهشت 1386, 10:40 صبح
سلام
یه تریگر بنویس که هر بار رکوردی اضافه میشه اون فیلد autonumber+1 رو بهت بگه!

once4ever
چهارشنبه 26 اردیبهشت 1386, 13:59 عصر
قبل از اینسرت میخوام بدونم چی میشه
نه بعد از اینسرت!

saeid5977
پنج شنبه 27 اردیبهشت 1386, 00:50 صبح
خوب اینجوری غیر از رکورد اول بقیه رو متوجه میشی دیگه منتها باید مقدارش رو نگه داری!

اینجا رو هم ببین
http://msdn2.microsoft.com/en-us/library/ks9f57t0.aspx

SELECT IDENT_CURRENT('TableName') + ( SELECT IDENT_INCR('TableName') ) AS NextAutoIncrementFieldValue

saeid5977
پنج شنبه 27 اردیبهشت 1386, 00:54 صبح
SELECT IDENT_CURRENT('TableName') + ( SELECT IDENT_INCR('TableName') ) AS NextAutoIncrementFieldValue

saeid5977
پنج شنبه 27 اردیبهشت 1386, 00:56 صبح
SELECT IDENT_CURRENT('TableName') + ( SELECT IDENT_INCR('TableName') ) AS NextAutoIncrementFieldValue
اینجا رو هم ببین
http://msdn2.microsoft.com/en-us/library/ks9f57t0.aspx

majid325
پنج شنبه 27 اردیبهشت 1386, 10:50 صبح
یه راه حل بی مزه:
موقع حذف چک کن اگه بزرگترین مقدار داره حذف میشه اونو ذخیره کن, حالا هر وقت خواستی مقدار بعدی رو بدست بیاری اول چک کن اگه max از مقدار ذخیره شده کوچکتر بود مقدار ذخیره شده رو + 1 کن اگه نه که max رو + 1 کن.

alimooghashang
یک شنبه 12 شهریور 1391, 17:16 عصر
SELECT IDENT_CURRENT('TableName') + ( SELECT IDENT_INCR('TableName') ) AS NextAutoIncrementFieldValue

این که توی اکسس اجرا نمیشه!

RESMAILY
دوشنبه 13 شهریور 1391, 08:17 صبح
به نام خدا
با سلام. حتي اگر آخرين عدد (يا هرعددي) حذف شده باشد فيلد اتونامبر عددي را كه شما تعيين كنيد قبول مي كند. اگر عددي در مابين اعدا حذف شده باشد دوحالت وجود دارد . يا اين اعداد در برنامه شما مهم است و در نتيجه عدد حذف شده بايد حذف شده باقي بماند. به علامت ركوردي كه ديگر وجود ندارد. اگر صرفا به عنوان ايندكس استفاده مي كنيد و مشخصات ديگري براي ركوردتان مهم است، مي شود فيلد اتونامبر را ريست كنيد. يا مي شود عدد حذف شده را پيدا كرده و به ركورد تازه اي اختصاص دهيد. روش آن ساده است. قدري كد نويسي و ور رفتن با ركوردست ها را لازم دارد كه انشاله خودتان زحمت پيداكردنش را تقبل مي فرماييد. فقط بدانيد مي شود.

mazoolagh
دوشنبه 13 شهریور 1391, 14:01 عصر
از طریق ADO EXTENTION یا همون ADOX میتونین به ویژگی SEED فیلدهای AUTONUMBER که نشاندهنده مقدار بعدی اون هست دسترسی پیدا کنین.
بدیهی است که باید رفرنس MICROSOFT ADO EXTENTION رو اضافه کنین:


DIM CG AS NEW ADOX.CATALOG
SET CG.ACTIVECONNECTION=CURRENTPROJECT.CONNECTION
DIM NEXT_VALUE
NEXT_VALUE=CG.TABLES("table_name").COLUMNS("autonumber_field_name").PROPERTIES("SEED")


همین!