PDA

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



اسماعیل ابراهیمی
سه شنبه 29 فروردین 1391, 18:03 عصر
با سلام خدمت دوستان
من یه 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

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

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

bozhmehrani
سه شنبه 29 فروردین 1391, 21:00 عصر
سلام دوست عزیز، آقا شما پروسیجرتونو با حلقه سه بار فراخوانی میکنی؟
یا یک بار ، ولی توی پروسیجر سه بار اد میکنی
آقا پیشنهاد من اینه، یک تابع هست
DateTime.Now.AddDays(int); تعداد روز که میخوای اضافه کن
توی اسکیوال ام همچین دستوری هست .
توی خود سیشارپ قضیه رو بپیچون که باز تو اسکیوال سر تاریخ فارسی به مشکل برنخوری

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


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