PDA

View Full Version : چطور شیفت دادن رکوردها



sarkhosh
یک شنبه 08 اردیبهشت 1392, 11:50 صبح
با سلام

یه جدول با د و فیلد دارم یکی تاریخ - شماره سند
هر بار که رکوردی اضافه میشه باید بر حسب تاریخ ،شماره سندها هم مرتب بشه.چطور باید اینکارو بکنم؟ مثلا سه رکورد زدم 5 و6 و 7 اردیبهشت ... با شماره سندهای 1و2و3 حالا اگه تاریخ 4 اردیبهشت رو به جدول اضافه کنم باید شماره سندش بشه 1 و بقیه رکوردها شیفت بشن به پایین.
ممنون

hossein_h62
دوشنبه 09 اردیبهشت 1392, 11:30 صبح
سلام
اینکه بصورت فیزیکی رکوردها به بالا و پایین شیفت بشن که امکان پذیر نیست. شما میتونید در کوئری هاتون برای تسلسل شماره اسناد به ترتیب تاریخ از تابع ROW_NUMBER استفاده کنید. معمولا در سیستمهای حسابداری برای رفع این مشکل در بدو ثبت سند یک شماره موقت به سند اختصاص داده میشه و در مقطعی که اسناد یک بازه زمانی رو دایمی و قطعی میکنن از این روش شماره اسناد به ترتیب تاریخ، تولید و آپدیت میشن.

sarkhosh
دوشنبه 09 اردیبهشت 1392, 12:43 عصر
ممنون از پاسختون . من هم برای یه برنامه حسابداری میخوام. قسمت آخر گفته هاتونو متوجه نشدم ممنونم بیشتر توضیح بدهید . یعنی برای جدولم 4 فیلد آی دی (که شماره واقعی سند هست) و شماره موقت وتاریخ و مبلغ در نظر بگیرم برای نمایش کل رکوردها به ترتیب تاریخ میشه با رو نامبر شماره ردیف رو به عنوان شماره سند به کاربر نمایش داد اما اگه کاربر بخواد از یه سند خاص پرینت بگیره شماره واقعی سند نمایش داده میشه.

hossein_h62
دوشنبه 09 اردیبهشت 1392, 13:02 عصر
بله یه راهش اینه که دو تا فیلد برای شماره سند در نظر بگیرید، شماره موقت میشه همون شماره IDENTITY یا شماره دستی که در هنگام ثبت سند به اون اختصاص میدین و شماره قطعی سند هم از تابعی که گفتم میتونید استخراج کنید :
SELECT TempDocNo,DocDate,Amount,ROW_NUMBER() OVER(Order By DocDate ASC ) As ConstantDocNo
From AccDocs
این یک کوئری فرضی هستش که ConstantDocNo شماره سند قطعیتون میشه که بر اساس تاریخ سند شماره گرفته.