واضح آرشیو وب فارسی:سایت ریسک: bad_boy_200706-12-2008, 07:13 PMسثلام دوستان من یک جدول دارم که حاوی سه فیلد بدهکار - بستانکار و تاریخ هست ، حالا میخوام ستون مانده رو هم به این جدول اضافه کنم میشه راهنماییم کنید که چطور میتونم این کار رو انجام بدم ؟؟؟ مثلا : !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! hamidreza_buddy06-12-2008, 07:55 PMبهتره که به صورت فیلد نباشه. بلکه از این دو فیلد دیگه اون رو محاسبه کنی. فکر می کنم این کد جواب بده: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! select اول جمع ستون بستانکار و ستون دوم جمع ستون بدهکار رو بدست می آره و از هم تفریق می کنه. bad_boy_200706-12-2008, 09:34 PMبهتره که به صورت فیلد نباشه. بلکه از این دو فیلد دیگه اون رو محاسبه کنی. فکر می کنم این کد جواب بده: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! select اول جمع ستون بستانکار و ستون دوم جمع ستون بدهکار رو بدست می آره و از هم تفریق می کنه. ممنون حمید جان ولی منظور من این نبود . ببین میخوام مانده صندوق پس از همون رکورد نشون داده بشه مثلا : مانده صندوق 200 تومن بوده و 100 تومن دریافت شده مانده بشه 300 تو رکورد بعدی اگه 200 تومن پرداخت بشه مانده رو نشون بده 100 تومن و به همین شکل تا آخرین رکورد که مانده واقعی صندوق رو نشون میده و باید با کوئری ای که شما نوشتید برابر باشه hamidreza_buddy08-12-2008, 01:22 PMاگه منظورتون اینه باز هم نیازی نیست یه فیلد جداگانه داشته باشید. احتمالاً با برنامه نویسی SQL (tsql) می شود این کار رو کرد ولی من بلد نیستم. یعنی به صورت برنامه نویسی هر دفعه یه محاسبه ای انجام داد و اون وبر گردوند. ولی چیزی که به ذهنم می رسه اینه که خودتون به صورت برنامه نویسی این کار رو انجام بدهید. یعنی اول جدول شامل فیلد های بدهکار و بستانکار رو بگیرید و بعد توی یه حلقه الگوریتم رو روش اعمال کنید. البته اگه یه فیلد جداگانه در نظر بگیرید، می تونید در موقع insert کردن ابتدا دستور select بالا رو اجرا کنید تا مقدار فعلی رو به دست بیاورید. سپس مقدار بستانکار یا بدهکار رو از اون کم یا اضافه کنید و اون رو توی ستون مانده بنویسید. mbd 136608-12-2008, 03:41 PMحاجي ، حميد راست ميگه نبايد داخل ديتا بيس اطلاعات محاسباتي رو نگه داشت يعني نبايد اطلاعاتي كه ميشه از محاسبه دو فيلد ديگر بدست آور را در فيلد ديگر قرار دا چه كتابي شد ! mbd 136608-12-2008, 03:42 PMالبته اگه اسرار داري ميشه هر زماني كه ديتابيست دار رفرش ميشه اين محاسبه رو انجام بده و بزاري داخل فياد مورد نظرت مثلا زمان اضافه كردن ركورد ، گزار شگيري .... bad_boy_200714-12-2008, 06:06 PMحاجي ، حميد راست ميگه نبايد داخل ديتا بيس اطلاعات محاسباتي رو نگه داشت يعني نبايد اطلاعاتي كه ميشه از محاسبه دو فيلد ديگر بدست آور را در فيلد ديگر قرار دا چه كتابي شد ! نه جانم من قصد انجام این کار رو ندارم چون این کار علاوه بر افزونگی فوق العاده زیاد ممکنه باعث ناسازگاری هم بشه !!!! bad_boy_200714-12-2008, 06:15 PMاگه منظورتون اینه باز هم نیازی نیست یه فیلد جداگانه داشته باشید. احتمالاً با برنامه نویسی SQL (tsql) می شود این کار رو کرد ولی من بلد نیستم. یعنی به صورت برنامه نویسی هر دفعه یه محاسبه ای انجام داد و اون وبر گردوند. ولی چیزی که به ذهنم می رسه اینه که خودتون به صورت برنامه نویسی این کار رو انجام بدهید. یعنی اول جدول شامل فیلد های بدهکار و بستانکار رو بگیرید و بعد توی یه حلقه الگوریتم رو روش اعمال کنید. البته اگه یه فیلد جداگانه در نظر بگیرید، می تونید در موقع insert کردن ابتدا دستور select بالا رو اجرا کنید تا مقدار فعلی رو به دست بیاورید. سپس مقدار بستانکار یا بدهکار رو از اون کم یا اضافه کنید و اون رو توی ستون مانده بنویسید. حمید جان خیلی خیلی ممنون از راهنماییت ولی با برنامه نوسی نمیخوام این کار رو بکنم به دو دلیل : 1- سرعتش چندان مطلوب نیست (انجام دادم سرعتش کم بود) 2-میخوام این کارهای پردازشی رو بندازم گردن سرور 3-میخوام مستقیما هم از سرور گزارش بگیرم (بدون برنامه با مشاهده ویو) سومی خیلی واسم مهمه چون مثلا میخوام فاکتور 2 ماه پیش آقای X رو چاپ کنم و در پایین فاکتور مانده حسابش رو هم نشون بدم بعد از صدور فاکتور که با وجود View نیاز به کد نویسی اضافه ندارم جواب سوالم رو جناب مهندس ثباتی در انجمن برنامه نویس دادن : !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! شیوه حلش واسم جالب بود 2 تا راه پیشنهاد داد اولی از یک جدول میانی استفاده میکنه که سریع تره ولی من ترجیح نمیدم و در دومی با استفاده از Rank`میاد و به هر ستون یک شماره (ID) اختصاص میده و ستون مانده رو میکنه مجموع بدهکار - بستانکار ستونهای با رنک کمتر از ستون فعلی . این دستور در ویو قابل پیاده سازیه یه نمونه جدول میندازم واسه دوستانی که سوال منو دارن bad_boy_200714-12-2008, 07:56 PMاسکریپت دیتابیس : !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! خروجی : !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 3660]