PDA

View Full Version : درج چند رکورد با هم با تاریخ های متفاوت (تاریخ شمسی محاسباتی)



اسماعیل ابراهیمی
سه شنبه 29 فروردین 1391, 18:04 عصر
با سلام خدمت دوستان
من یه Stored Procedure دارم که ماله فروش اقساطی کالا هستش . می خوام با ارسال شماره فاکتور ، کد مشتری ، مبلغ هر قسط ، تعداد اقساط و تعداد روز هر قسط به تعداد اقساط وارد شده در جدول اقساط رکورد درج بشه .

کد درج رکوردها رو نوشتم . تنها مشکلم اینه که باید تاریخ پرداخت اقساطی که در رکوردها ذخیره میشه با محاسبه تعداد اقساط و تعداد روز قسط انجام بشه .


مثال (با فرض اینکه تاریخ کنونی 1391/01/31 هست):

پارامترهای ارسالی به پروسیجر اس کیو ال :

شماره فاکتور 1
کد مشتری 1
مبلغ هر قسط 5000
تعداد قسط 3
تعداد روز قسط 15

*********************************
رکوردهایی که باید درج بشه :

شماره فاکتور کد مشتری مبلغ قسط تاریخ قسط
1 1 5000 1391/02/15
1 1 5000 1391/02/30
1 1 5000 1391/03/14

به نظر شما چطور تاریخ شمسی ارسالی به پروسیجر رو با عدد تعداد روز اقساط جمع کنم تا تاریخ های رکوردها بدست بیان ؟

ممنون میشم اگه راهنمایی بفرمایید .

اسماعیل ابراهیمی
پنج شنبه 31 فروردین 1391, 15:01 عصر
خودم نوشتمش

با استفاده از یه حلقه تو SQL Server

اینم کدش :

declare @count_checker3 int
select @count_checker3=count(*) from [Peyment]

if @count_checker3<>0
begin
declare @pay_id_number int
select @pay_id_number=max(pay_id) from [Peyment]
end

else

begin
set @pay_id_number=1
end



declare @datetime datetime

select @datetime=getdate()


--DT = Datetime
declare @DT nvarchar(10)
declare @i int
set @i=1


while (@i<=@pay_ghest_count)
begin
select @datetime=dateadd(dd,@pay_ghest_day,@datetime)
SELECT @dt=convert(nvarchar,@datetime,111)
insert into [Peyment]
(
pay_id,
pay_sm_id,
pay_cus_id,
pay_price,
pay_date
)
values
(
@pay_id_number+1,
@pay_sm_id,
@pay_cus_id,
@pay_ghest_price,
@DT
)
set @i=@i+1
select @pay_id_number=max(pay_id) from [Peyment]
end

baktash.n81@gmail.com
یک شنبه 03 اردیبهشت 1391, 08:47 صبح
سلام

اینکه نوشتی درسته اما با توجه به اینکه تعداد روزها در ماه های مختلف میلادی با شمسی یکسان نیست ممکنه در برخی موارد شماره ماه به هم بریزه ... که زیادم مهم نیست ... اما یکی از روش هایی که من دیدم استفاده می شه اینه که تاریخ ها به صورت میلادی نگه داری بشه و موقع نمایش تبدیل به شمسی به شه ...

sanay_esh
یک شنبه 03 اردیبهشت 1391, 09:27 صبح
با سلام خدمت شما دوست عزیز
با توجه به اینکه شما میتوانید تاریخ را بصورت میلادی در سیستم ذخیره نمائید میتوانید از امکانات خود sql برای اضافه کردن تعداد روز به تاریخ هم استفاده نمائید بدین ترتیب که تاریخ را از کاربر و یا سیستم بصورت شمسی دریافت میکنید و با یک تابع تبدیل آنرا به تاریخ میلادی تبدیل میکنید و
و با استفاده از توابع Date خود sql میتوانید به آن تاریخ بصورت روز و ماه و سال اضافه و یا کسر کنید و در بانک اطلاعاتی خود ذخیره نمائید
از طرفی برای ارائه باید تبدیل میلادی به شمسی هم انجام دهید و حتی میتوانید تمام روزهای سال و ماه و ساعتهای آن را کنترل کنید

معایب استفاده از تابع تبدیل تاریخ : سرعت را در گزارشگیری های مالی بالای 1000 رکورد پایین می آورد

تمامی مطالب و توابع ذکر شده در بالا را میتوانید با یک جستجوی مختصر در همین برنامه نویس پیدا کنید !!!