ورود

View Full Version : سوال: ایجاد فیلد auto number براساس یک فیلد دیگر



Omid_Manam
یک شنبه 14 خرداد 1396, 12:48 عصر
با سلام خدمت همه دوستان عزیز. طاعات و عبادات همگی قبول باشه انشاالله.
دوستان سوال من این هست که من یه جدول دارم برای ثبت سند حسابداری . ساختار جدول رو این در نظر بگیرید




مشخصه جدول - کلید اصلی - auto number
id


شماره سند - int
documnetNo


تاریخ سند
Date


مشخصه گروه سند-
CollectionId








فیلد id که تکلیفش معلومه و هیچ از 1 شروع میشه تا n اما فیلد documnetNo برای هر CollectionId از 1 شروع میشه تا n یعنی چیزی شبیه اطلاعات زیر



collectionid
date
documnetNo
id


1
1396/05/10
1
1


1
1396/05/10
2
2


1
1396/05/13
3
3


2
1396/05/19
1
4


2
1396/05/12
2
5



لازمه بگم که من از entity freamwork استفاده میکنم و بانک هم sql هست . اگه بخواهم قبل از هر درج اطلاعات خودم اخرین شماره رو در بیارم و به اضافه یک کنم و ثبت کنم به دلیل تحت وب بودن برنامه و عملیات های زیادی که انجام میشه ممکنه شماره سند تکراری صادر بشه . حالا پیشنهاد و راه حل چیه ؟

ممنونم

_behnam_
یک شنبه 14 خرداد 1396, 16:06 عصر
سلام. میتونید یک پروسیجر بنویسید واسه درج ، که قبل از درج براساس شماره سند آخرین رکورد رو پیداکنه و collectionid رو با عدد 1 جمع کنه و بعد عملیات درج انجام بشه.

کد زیر :

DECLARE @NewCollectionID int
SET @NewCollectionID =(SELECT TOP 1 CollectionId FROM Table WHERE documnetNo=0 ORDER BY id DESC)
SET @NewCollectionID=@NewCollectionID+1

documnetNo= رو مقدار بدید. شماره سند. و بعد درج انجام بشه. @NewCollectionID هم مقداری هست که در فیلد collectionid قرار میگیره

Omid_Manam
یک شنبه 14 خرداد 1396, 16:46 عصر
ممنونم دوست عزیز از پاسختون ولی فکر کنم شما اشتباه متوجه شدید سوال بنده . من قصدم این هست هر شماره سند براساس collection منحصر به فرد باشه ولی در کل من نمیخواهم از sp استفاده کنم . این کار رو بخواهم بکنم ترجیح میدم از trigger استفاده کنم. من بیشتر دنبال راه حلی هستم که از طریق خود ef اتفاق بیفته.
بازم ممنونم