PDA

View Full Version : آگاهی از کد تولید شده بانک اطلاعاتی Access از نوع AutoNumberدر C#‎



AminErfani
سه شنبه 16 شهریور 1389, 22:24 عصر
سلام
می خواستم بدونم زمانی که یک رکورد جدید تو بانک access ثبت می کنیم ، میشه تو همون لحظه هنگام در ج(حتی قبل از درج رکورد در جدول) بفهمیم که اکسس چه کدی برای اون در نظر گرفته؟ (فیلد از نوع AutoNumber است)
لطفا راهنمایی کنید.
با تشکر .

Sajjad.Aghapour
سه شنبه 16 شهریور 1389, 22:45 عصر
http://msdn.microsoft.com/en-us/library/ms190315.aspx

chasbonakam
جمعه 09 مهر 1389, 15:53 عصر
سلام
لطف می کنید در باره ی نحوه پیاده سازی این کار در سی شارپ هم توضیح بدید اگه نمونه کد بگذارید ممنون می شم.
من تلاش کردم ولی نتونستم اجرا بگیرم
با تشکر

pedramfj
جمعه 09 مهر 1389, 17:29 عصر
سلام
می خواستم بدونم زمانی که یک رکورد جدید تو بانک access ثبت می کنیم ، میشه تو همون لحظه هنگام در ج(حتی قبل از درج رکورد در جدول) بفهمیم که اکسس چه کدی برای اون در نظر گرفته؟ (فیلد از نوع AutoNumber است)
لطفا راهنمایی کنید.
با تشکر .
نمیدانم این روش اصولی هست یا نه؟؟؟
فقط کافیه ستونی که فیلد آن از نوع AutoNumber است را بخوانید و در یک متغیر قرار دهید(با این کار آخرین عددی که در نظر گرفته شده را در متغیر قرار میدهد )
حالا متغیر را با گام تعریف شده در بانک جمع کنید ونمایش دهید(بطور پیشفرض 1)

chasbonakam
جمعه 09 مهر 1389, 17:53 عصر
سلام
ضمن تشکر از جوابتون باید به این نکته اشاره کنم که امکان داره یه رکوردی در جدول درج شده باشه ، مثلا با کد 6 اگر این رکورد رو حذف کنیم رکورد بعدی با شماره 7 در بانک ذخیره می شه در صورتی که در حال حاضر اخرین رکورد موجود در بانک رکورد شماره 5 هست .پس یعنی اگه من اخرین رکورد رو بخونم بعد یکی بهش اضافه کنم امکان اشتباه خیلی بالاست.

pedramfj
جمعه 09 مهر 1389, 18:58 عصر
سلام
ضمن تشکر از جوابتون باید به این نکته اشاره کنم که امکان داره یه رکوردی در جدول درج شده باشه ، مثلا با کد 6 اگر این رکورد رو حذف کنیم رکورد بعدی با شماره 7 در بانک ذخیره می شه در صورتی که در حال حاضر اخرین رکورد موجود در بانک رکورد شماره 5 هست .پس یعنی اگه من اخرین رکورد رو بخونم بعد یکی بهش اضافه کنم امکان اشتباه خیلی بالاست.
دوست عزیز ببخشید .کاملا درسته .
فقط کافیه از دستور max استفاده کنیم .
بزرگترین عدد ستون را بر میگردونه .

select max(id) from table

mohsensaghafi
جمعه 09 مهر 1389, 19:55 عصر
سلام دوستان.
روشهایی که دوستان گفتند در حالاتی خاص جواب می ده اما ممکنه که در همه موارد درست جواب ندن. بهترین جواب رو دوست عزیزمون sajjadlove با ارسال یک لینک دادن. جوبتون IDENTITY@@ هست. به لینک مراجعه کنید لطفا.

chasbonakam
جمعه 09 مهر 1389, 20:21 عصر
سلام من اون مطلب رو خوندم ولی نه تو سی شارپ تونستم اجرا بکنمش و نه تو اکسس
لطفا راهنمایی کنید

AmirAmiri
جمعه 16 مهر 1389, 18:30 عصر
از اینکه به این سوال جواب ندادید ممنونم.
بسیار تشکر می کتم:ناراحت::گریه:
سلام دوست عزیز.
چطور میگید که به سواله شما جواب داده نشده؟
من فقط در مورد پاسخ ها توضیح میدم تا بهتر متوجه بشید.
یک جدول مثل این بسازید:
CREATE TABLE tbltest(ID int IDENTITY(1,1),V int)

و این رو توی SQL اجرا کنید:
INSERT INTO tbltest(V) VALUES(1)
SELECT SCOPE_IDENTITY() AS [SCOPE_IDENTITY]
این هم همون کار رو میکنه :
INSERT INTO tbltest(V) VALUES(1)
SELECT @@IDENTITY AS [@@IDENTITY]

تابع SCOPE_IDENTITY فقط زمانی کار میکنه که شما یک دستور INSERT رو اجرا کرده باشید و بلافاصله بعدش از این تابع SELECT بگیری.

در ضمن یک دستور دیگه هم هست که بیشتر برای استفاده توی خوده SQL خوبه:
DBCC CHECKIDENT('myTable')
وقتی این دستور رو اجرا میکنی، توی محیط SQL بهت پاسخ میده و IDENTITY آخرین رکورد درج شده رو بهت میده.
به جای myTable باید نام جدول رو بنویسی.

موفق و پیروز باشی.

(فقط میخواستم تاپیک بی پاسخ نداشته باشیم)