PDA

View Full Version : چگونگی ساخت یه ستون برای نگهداری مجموع یه ستون دیگه



sm
دوشنبه 13 آبان 1387, 10:14 صبح
با سلام
من یه جدول دارم که تقریبا مشابه عملیات روی یک حساب عمل میکنه .. مثلا کاربر در تاریخ 1 یه مقدار پول واریز میکنه به حساب ..در تاریخ دو یه مقدار پول برداشتز میکنه ... در تاریخ 3 یه مقداری برداشت میکنه همینطور تا آخر...
میخوام جدولم یه ستون داشته باشه که تا آون لحظه موجودی حسابش رو نشون بده (مجموع ستون مقدار موجودی با توجه به اینکه موجودی برداشت منفی است و موجودی واریز مثبت است) ....
میتونم تو برنامه این ستون رو مدیریت بکنم که مطمئنا کار وقت گیریه و درست نیست... میشه تو sql برای اون جدول تریگر بنویسم...
ولی شنیدم که sql server 2005 به یه روشی میتونه خودش این امکان رو به یه ستون بده... اگه موضوع صحت داره ممنون میشم از اساتید که راهنماییم کنن
موفق باشید

MajerajooyeKhallagh
سه شنبه 14 آبان 1387, 07:38 صبح
دوست عزیز:
هر فیلد که در یک Table تعریف میکنید(در حالت Modify کردن یک Table) در بخش Column Properties آن(در بخش پایین و در مود Design) یک property با عنوان Computed Column Specification وجود دارد که شما میتونید برای آن در بخش Formula ,فرمول مربوط به محاسبه این Column را بنویسید و یا میتونید با استفاده از Script نویسی این کار را انجام دهید به عنوان مثال:


CREATE TABLE Computed
(
c1 int,
c2 Value,
c3 AS(c2*(2))
)

در این table با وارد کردن مقادیر در فیلد c2 به طور اتوماتیک مقدار فیلد c3 که برابر است با دو برابر فیلد c2 ,محاسبه میگردد و در آن قرار میگیرد.

امیدوارم این توضیحات براتون مفید واقع بشه.

sm
سه شنبه 14 آبان 1387, 10:25 صبح
سلام
ممنون از راهنماییتون
چیزایی که فرموده بودین رو امتحان کردم چند تا مشکل دارم :
مثلا جدولم سه تا ستون داره 1- id
2- num
3- sum
میخوام هر موقع یه سطر به جدول اضافه کردم خودش مجموع مقادیر ستون num رو بدست بیاره و اونو بذاره تو ستون sum ...
اومدم تو قسمت formula برای ستون sum نوشتم : sum(num ولی خطا میده و میگه نمیتونین تو این بخش )(formula از aggregate function ها استفاده کنین .. راهی براش دارین؟
ممنون
موفق باشید؟

sm
سه شنبه 14 آبان 1387, 10:51 صبح
با سلام
من اومدم یه function تو دیتابیسم نوشتم که مجموع ستون num رو محاسبه میکنه و برمی گردونه اونو توی بخش formula صدا زدم و مشکل حل شد...
فقط مشکلی که پیش اومد اگه کاربر یه سطری رو ویرایش کنه یا حذف کنه فقط همون سطر ستون sum ویرایش میشه درصورتی که من میخوام همیشه آخرین سطر حاوی اطلاعات بروز شده از ستون sum باشه... فکر کنم فقط مجبورم از تریگرها استفاده کنم ... کسی نظر دیگه ای نداره؟
ممنون
موفق باشید