PDA

View Full Version : بدست آوردن مقدار id جدول در رویداد BeforePost



mortezahbh
سه شنبه 18 آذر 1393, 19:36 عصر
با سلام

واسه این مورد هرچی گشتم به نتیجه ای نرسیدم

میخوام در رویداد BeforePost مقدار id جدولم رو داشته باشم چطوری باید اینکارو بکنم؟؟

ممنون از همه دوستان

یوسف زالی
چهارشنبه 19 آذر 1393, 00:51 صبح
سلام.
اینسرت نکرده آی دی میخوای؟؟

BORHAN TEC
چهارشنبه 19 آذر 1393, 01:16 صبح
با سلام،
باید مقدار generator مربوط به فیلد id رو از DBMS بخونید. به عنوان مثال در مورد Firebird میتونید از توضیحات موجود در لینک زیر کمک بگیرید:
http://stackoverflow.com/questions/13780045/how-to-change-generator-value-with-dbexpress-framework-whithout-using-stored-pro
موفق باشید...

یوسف زالی
چهارشنبه 19 آذر 1393, 02:04 صبح
شاهین من قضیه رو نگرفتم،
فرض کن تو اس کیو ال آی دی جدولی identity هست، چطور قبل از insert می شه آی دی که قراره اختصاص داده بشه رو داشت؟
سوال این بود یا من اشتباه برداشت کردم؟

hadisalahi2
چهارشنبه 19 آذر 1393, 09:42 صبح
البته شاید منظورش اینه که ID رو بسازه خودش نه اینکه AutoID رو برگردونه ؟ :متفکر:

mortezahbh
چهارشنبه 19 آذر 1393, 11:01 صبح
اینسرت نکرده آی دی میخوای؟؟

آره نمیشه ؟ :متفکر:

خب میخوام ببینم طوری نمیشه max id رو بدست آورد .




البته شاید منظورش اینه که ID رو بسازه خودش نه اینکه AutoID رو برگردونه ؟ :متفکر:


ن منظورم همون برگردوندن فیلد autoID هس.

ببینید بذارید واضح تر توضیح بدم

من میخوام وقتی دارم توی جدول اول یک رکورد ثبت میکنم همزمان بصورت اتومات چند فیلد در یک جدول دیگه ثبت کنم و میخوام id جدول اول رو توی جدول دوم داشته باشم.

امیدوارم منظورم رو متوجه شده باشید

ممنون از همه دوستان :لبخندساده:

mortezahbh
چهارشنبه 19 آذر 1393, 11:06 صبح
با سلام،
باید مقدار generator مربوط به فیلد id رو از DBMS بخونید. به عنوان مثال در مورد Firebird میتونید از توضیحات موجود در لینک زیر کمک بگیرید:
http://stackoverflow.com/questions/13780045/how-to-change-generator-value-with-dbexpress-framework-whithout-using-stored-pro
موفق باشید...
ممنون از پاسختون:قلب:
خب من در حال ثبت فیلد در جدول هستم و اگه جدول رو دوباره باز کنم که اطلاعات میپره :ناراحت:

یوسف زالی
چهارشنبه 19 آذر 1393, 13:37 عصر
برای اینکه ببینید آی دی که الان ثبت کردید چی بود، در اس کیو ال از Identity@@ استفاده می شه. یعنی شما در اس پی insert باید این مقدار رو برگردونید.
قبل از insert به هیچ وجه نمی شه اون رو گرفت. حتی با max.
ممکنه همزمان چند نفر دارند اینسرت می کنند، همه یک max می گیرند ولی بعد از ثبت متوجه می شند که آی دی ها عوض شده. چون نمی شه همه یک آی دی بگیرند.

BORHAN TEC
چهارشنبه 19 آذر 1393, 14:01 عصر
سلام،
حاج یوسف در مورد SQL Server نمیدونم که قضیه چطوریه. ولی در مورد Firebird توضیح میدم شاید توی MSSQL هم بشه ازش استفاده کرد.
توی Firebird اگه بخواهیم یک فیلد AutoInc بسازیم، یک Generator هم ایجاد میشه. Generator میشه گفت که متغیر دائمی هست که میتونه یک عدد رو نگه داره(توی فایل پایگاه داده ذخیره میشه و دائمیه). موقعی که یک رکورد اضافه میکنیم id رو میاد با مقدار کنونی اون Generator به اضافه یک میسازه و در رکورد مورد استفاده قرار میگیره و در این میان مقدار id رکورد هم توی Generator قرار میگیره. همانطور که خودت هم اشاره کردی با max نمیشه مقدار id ای که قراره درج بشه رو بدست آورد(شاید رکوردی که بالاترین مقدار id رو داره حذف شده باشه و ...). کلاً تو Firebird و Interbase فیلد از نوع AutiInc با یک Generator و Triger شبیه سازی میشه. فکر می کنم که توی SQL Server هم باید چنین چیزی وجود داشته باشه.

mortezahbh
چهارشنبه 19 آذر 1393, 17:21 عصر
ممون از دوستان گرامی

با مواردی که فرمودید یکم کار میکنم اگه به نتیجه نرسیدم دوباره مزاحمتون میشم و از راهنمایی های مفیدتون استفاده میکنم

با سپاس فراوان