PDA

View Full Version : سوال: برای شروع سال جدید شماره ردیف ها از یک شروع بشه.



roshanak_g
دوشنبه 24 مرداد 1390, 18:52 عصر
با سلام خدمت تمامی دوستان.
یک سوال از خدمتتون داشتم و اینکه یه برنامه ای دارم می نویسم که یکسری اطلاعات اشخاص وارد میشه. که این اطلاعات در سالهای مختلف هستش(مثلا 89،90و...) هر فردی که در سیستم ثبت میشه با توجه به شماره ردیف(که identity اش true هستش) یک شماره اختصاص داده میشه.حالا می خوام واسه شروع هر سال این شماره از یک شروع بشه. مثلا اگه اطلاعات سال 89 تموم شد و کاربر خواست اطلاعات سال 90 رو وارد کنه شماره ردیف از یک شروع بشه نه از ادامه سال قبل . حالا با توجه به اینکه من این اطلاعاتو در یک جدول می خوام ذخیره بکنم.
ممنون میشم یک راه حل مناسب برام پیشنهاد بدید.

با نهایت تشکر.

ya30ien2
دوشنبه 24 مرداد 1390, 18:56 عصر
فکر میکنم بهتر هستش شما دو تا ردیف شماره بزاری که یکی کلید اصلی باشه
و در هر سال ردیف بعدی از یک شروع بشه
وبرای گزارشگیری هم که شما با تاریخ شرط میکنی
البته بازم ببینیم دوستان حرفهای شاید راه حل بهتری داشته باشن

Esmail Solhkhah
دوشنبه 24 مرداد 1390, 18:56 عصر
تو یه جدول نمیشه دوتا رکورد با identity یکسان داشت

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

موفق باشید.

roshanak_g
دوشنبه 24 مرداد 1390, 23:03 عصر
من متوجه نشدم، میشه یکم واضحتر توضیح بدین. یعنی هرسال جدید که شروع میشه من باید یه جدول درست کنم؟

Esmail Solhkhah
دوشنبه 24 مرداد 1390, 23:22 عصر
من متوجه نشدم، میشه یکم واضحتر توضیح بدین. یعنی هرسال جدید که شروع میشه من باید یه جدول درست کنم؟

دوست عزیز با توجه به نوشته خودتون که میخاید تو هر سال فیلدی که Identity هست از یک شروع بشه

بله شما تو تنظیمات برنامتون باید ایجاد سال مالی بذارید و اونجا تیبل مربوط به اون سال مالی رو ایجاد کنید. چون فیلدی که Identity هست نمیتونه دو مقدار مشابه تو یه جدول داشته باشه

موفق باشید.

linux
دوشنبه 24 مرداد 1390, 23:55 عصر
با سلام خدمت تمامی دوستان.
یک سوال از خدمتتون داشتم و اینکه یه برنامه ای دارم می نویسم که یکسری اطلاعات اشخاص وارد میشه. که این اطلاعات در سالهای مختلف هستش(مثلا 89،90و...) هر فردی که در سیستم ثبت میشه با توجه به شماره ردیف(که identity اش true هستش) یک شماره اختصاص داده میشه.حالا می خوام واسه شروع هر سال این شماره از یک شروع بشه. مثلا اگه اطلاعات سال 89 تموم شد و کاربر خواست اطلاعات سال 90 رو وارد کنه شماره ردیف از یک شروع بشه نه از ادامه سال قبل . حالا با توجه به اینکه من این اطلاعاتو در یک جدول می خوام ذخیره بکنم.
ممنون میشم یک راه حل مناسب برام پیشنهاد بدید.

با نهایت تشکر.
همیشه sql server کاری هایی که ما میخواهیم انجام بدهیم را به راحتی برآورده نمی سازد، شما یک فیلد منحصر بفرد دارید که به عنوان کلید تعریف می کنید که از نوع عدد یا یونیک آدینتیفایر هست، این فیلد
نباید دستکاری بشود، یک فیلد دیگر ایجاد کنید که شماره سریال شما باشد و ورود داده ها در این فیلد توسط شما کنترل می شود با استفاده از یک sp یا یک فانکشنی که خودتان در sql نوشته اید این کار به آسانی قابل حل هست.
فرض کنید شما در sql یک تابع می سازید ورودی اش سال هست ، این تابع سال را می گیرد و max رکوردهایی که با با آن سال وارد شده به اضافه یک بر می گرداند.