View Full Version : گذاشتن شرط در فیلدauto number
ShimaSh
سه شنبه 20 آذر 1386, 08:48 صبح
سلام
فیلدی دارم که بصورت auto number مقدار دهی می شه. حالا می خوام بدونم چطوری می تونم برای این فیلد شرط بذارم. یعنی اگر یکی از فیلدهای دیگرم مقدارش 1 بود فیلد auto number با عدد 1 شروع شه و همینطور برای 2 ..... :متفکر:
ممنون می شم راهنمایی بفرمائید.
مرسی شیما
mzjahromi
سه شنبه 20 آذر 1386, 08:55 صبح
فیلد Auto number همیشه از یک عدد شروع میشه و یکی یکی بالا میره
اگر بخوای بگی موقع شروع از فلان عدد شروع بشه اون حرفی جدا است
ولی اونی که شما گفتید به منطق Auto number نمی خوره یا اینکه من منظورتون رو بد فهمیدم
ShimaSh
سه شنبه 20 آذر 1386, 10:04 صبح
در واقع می خوام واسه فیلد Auto number شرط بذارم. مثلا همونطور که گفتم:
اگه یکی از فیلدهای دیگرم مقدارش 1 بود فیلد auto number با عدد 1 شروع شه و همینطور برای 2...
JAFO_IRAN
سه شنبه 20 آذر 1386, 10:20 صبح
سلام
فیلد auto number (البته من فرض میکنم همون IDENTITY باشه - چون راجع به SQL حرف میزینیم)، در سطح یک جدول مقداردهی میشه....
چه طوری میشه رفتار یا منطقش رو با "مقدار" یک فیلد که در یکی از "رکورد"های جدول قرار داره ارتباط داد....
حتما سوال رو درست مطرح نکردهاید - ....
ارادت
ShimaSh
سه شنبه 20 آذر 1386, 11:19 صبح
jafo-iran عزیز, سوالمو درست مطرح کردم منتها فکر کنم این غیر ممکنه.
فیلد دیگرم شامل سه تا عدد ثابت 1-2و3 است. که من می خواستم بقول شما IDENTITY بر اساس این سه عدد باشه. اون پائین یه فرمولا دیدم گفتم شاید بشه.
بهر حال ممنون
شیما
sm
سه شنبه 20 آذر 1386, 12:12 عصر
سلام
ببخشین من DC شدم
میخواستم بگم که ممکنه که سما توی طراحیتون اشتباهی انجام دادین و در برخی واقع اگه چند جدول داشته باشین بهینه تر باشه!
در هر حال با استفاده از تریگرها میتونین کنترل فیلدهای Autonumber رو در دست بگیرین... لیکن اصلا اصولی و منطقی نیست!
یه نمونه داشتم ایشالله براتون میزارمش.
موفق باشید
ShimaSh
سه شنبه 20 آذر 1386, 12:57 عصر
طبق گفته شما حداقل 20 جدول باید اضافه کنم
که فکر نمی کنم اینم اصلا منطقی باشه
AminSobati
سه شنبه 20 آذر 1386, 23:46 عصر
البته شاید به قول دوستان این نیاز رو با تغییر در طراحی بشه پاسخ داد اما به هر حال با دستور DBCC CHECKIDENT میتونین مشخص کنین Identity به چه شکل کارش رو شروع کنه. شاید مفید واقع بشه...
ShimaSh
چهارشنبه 21 آذر 1386, 09:47 صبح
سلام.
مرسی مدیر بخش.
منتها ممکنه لطفا بیشتر توضیح بدید. با دستور DBCC CHECKIDENT کار نکردم.
می تونه شرط داشته باشه؟ چطوری؟
ممنون شیما
Alireza Orumand
چهارشنبه 21 آذر 1386, 10:14 صبح
سلام
ببینید شما یه مقدار Identity برای جدول گذاشتید که به شکل اتوماتیک یه شماره به هر سطر اختصاص میده مثلا با اضافه شدن هر سطر شماره یکی افزایش پیدا میکنه.. به کمک DBCC CHECKIDENT شما میتونید تو شرایط تغییری ایجاد کنید مثلا بگید که به جای اینکه از رقمی که در حال حاضر در حال کار با اون هستید ادامه بده از یه رقم دیگه ادامه بده.
در مجموع فکر میکنم موارد بالا کار شما رو راه نندازه چون چیزی که من از سوال شما برداشت کردم این بود که شما یه فیلد دیگه دارید که مقدارش میتونه 1، 2 یا 3 باشه حالا اگر کاربری شماره 3 رو انتخاب کرد میخواهید شماره مثلا بشه 301 حالا کاربر بعدی اگر باز 3 انتخاب کرد بشه 302 حالا اگر یه کاربر اومد 2 رو انتخاب کرد بشه 201 و ...
اگر سوال شما این چیزی باشه که من برداشت کردم کار شما با aouto number راه نمیوفته چون با اون دستوری هم که معرفی شد شما نهایتا میتونید بگید که از مثلا 3 شروع کن که بعد از 3 میشه 4 نه اینکه 301.
برای انجام این کار شما باید کمی تغییر در طراحی بدید.
موفق باشید.
ShimaSh
چهارشنبه 21 آذر 1386, 11:38 صبح
سلام.
برداشته شما کاملا درسته.
فکر می کنم طراحی درست باشه چون من سه نوع خودرو دارم(راه سازی1, سنگین2, سواری3). که هر کدوم ممکنه تعمیر کلی یا جزئی داشته باشه من نمی تونستم واسه فرمم کلید اصلی جز Identity پیدا کنم. چون یا تعمیر کلی داریم یا جز و یا هردو. حالا می خواستم این Identity مشخص باشه که واسه چه نوع خودرویی است. یعنی اگه راه سازی1 باشه Identity از, مثلا 101 شروع شه....
حالا اگه شما طراحی یا کار دیگه ای به نظرتون می رسه. ممنون می شم راهنمایی بفرمائید.
مرسی همه شیـــــما
AminSobati
چهارشنبه 21 آذر 1386, 12:05 عصر
چنین کاری ممکنه مشکلاتی به همراه داشته باشه. مثلا وقتی رکوردی دارید که ID اون 1700 هست، از کجا متوجه میشین که مقادیر جدولی که این رکورد به اون تعلق داره، آیا از 101 شروع شده یا از 1001؟ این نمیتونه وجه تمایزی برای رکوردهای شما تلقی بشه. چرا یک فیلد دیگه در کنارش در نظر نمیگیرین تا با ترکیب Identity یونیک بشن؟
Alireza Orumand
پنج شنبه 22 آذر 1386, 09:55 صبح
سلام
که هر کدوم ممکنه تعمیر کلی یا جزئی داشته باشه من نمی تونستم واسه فرمم کلید اصلی جز Identity پیدا کنم.
ببینید با شرایطی که شما ذکر کردید استفاده از aouto number درست نیست. شما توی جدولتون فیلدی ندارید که بتونه کلید اصلی باشه برای همین از aouto number میخواهید استفاده کنید. ولی در شرایطی که شما دارید با کاری که شما میخواهید انجام بدید دو راه دارید اول اینکه خودتون اعداد رو تولید کنید که کمی درد سر داره و راه دوم اینکه شما یه فیلد رو به صورت aouto number انتخاب کنید و اینطور که معلومه شما فیلد دیگه ای دارید که شماره های 1 تا 3 رو نگه داری میکنه. حالا این دوتا فیلد رو با هم به عنوان کلید اصلی استفاده کنید.
این کار مشکل شما رو حل میکنه هم کلید اصلی aouto number هست و هم شماره عملیات مورد نظر توی اون لحاظ شده. شما دلیلی دارید که میخواهید حتما کلید اصلی داخل یک فیلد باشه؟
موفق باشید.
ShimaSh
سه شنبه 27 آذر 1386, 11:31 صبح
سلام.
مرسی
منتها منظور شما از این نوشته چیه؟
پیشنهاد بهتری دارید؟
شما دلیلی دارید که میخواهید حتما کلید اصلی داخل یک فیلد باشه؟
ممنون شیما:لبخندساده:
SYNDROME
سه شنبه 27 آذر 1386, 16:53 عصر
کاربر ShimaSh
فکر کنم شما خودتان بیایید و یک فیلد ID(همان Autonumber ) ایجاد کنید و سپس یک فیلد Kind هم در نظر بگیرید تا تشخیص دهید برای کدام نوع(همان سه نوع) است ایجاد کنید.
حالا با استفاده ار چنین دستوری می توانید نیاز خود را بر طرف کنید.
Select Max(ID)+100
From Tbl_Test
Where Kind = 1
حالا من برای حالت اول عدد خود را از 100 شروع می کنم و سپس مقدار ID را خودتان مقدار دهی کنید.
ممنون شیما:لبخندساده:
فکر کنم این جمله امضاء شماست پس بهتر است در قسمت امضاء خود وارد کنید تا همیشه در آخر هر پستتان بیفتد.
موفق باشید
ShimaSh
دوشنبه 08 بهمن 1386, 09:08 صبح
سلام.
همونطور که گفتید طراحی و تغییر دادم.
فکر کنم این جمله امضاء شماست پس بهتر است در قسمت امضاء خود وارد کنید تا همیشه در آخر هر پستتان بیفتد.
موفق باشید
بهتره اینطوری فکر نکنید. چون بستگی داره, منظور همینه ولی جملات مختلفی استفاده می کنم.:چشمک:
مرسی همه
shahab2025
دوشنبه 08 بهمن 1386, 12:31 عصر
سلام
ببینید شما یه مقدار Identity برای جدول گذاشتید که به شکل اتوماتیک یه شماره به هر سطر اختصاص میده مثلا با اضافه شدن هر سطر شماره یکی افزایش پیدا میکنه.. به کمک DBCC CHECKIDENT شما میتونید تو شرایط تغییری ایجاد کنید مثلا بگید که به جای اینکه از رقمی که در حال حاضر در حال کار با اون هستید ادامه بده از یه رقم دیگه ادامه بده.
سلام
مشکل من هم دقیقا همینه...
میشه بگید چطوری باید از این دستور استفاده کرد...
مثلا توسط query بگیم از 100 شروع کن...
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.