PDA

View Full Version : سوال: لیست کردن تعداداقساط



amirkazem
شنبه 05 تیر 1395, 16:42 عصر
باسلام وآرزوی قبولی طاعات وعبادات!
برای فروش اقساطی یک کالا، پس ازدریافت مبلغی ازکل قیمت کالابه عنوان پیش پرداخت(نقدی)، مقدارمانده رادر4% ضرب می کنیم که مقدارجدیدی به دست می آید.مثلاً مبلغ مانده کالایی 30000000ریال معادل سه میلیون تومان هستش.اگراین مبلغ رادر4% ضرب کنیم عددبه دست آمده(1200000)می شود.برای تقسط این مبلغ رابامبلغ مانده جمع می کنیم که می شود:31200000ریال معادل سه میلیون ویکصدوبیست هزارتومان. حالابرای تقسیط(قسط بندی) ازمشتری تعداداقساط پرسیده می شودوباتوجه به تعدادقسط مبلغ مجموع(31200000) برتعدادقسط تقسیم می شود. یعنی اگرتعداداقساط به فرض 10باشد هرقسط مبلغ 3120000ریال معادل 312هزارتومان می شود.
اماسوال اینجاست که اگربخواهیم این تعداد(10)قسط رابراساس تاریخ که معمولاً هرماه یکبارهستش رادرجدول ذخیره کنیم، چکاربایدکنیم. یعنی برنامه ای بنویسیم که این لیست 10قسطه راهمراه باتاریخ ومبالغ مربوطه برای مامحاسبه کرده ونمایش دهد. اگربتوانیم این لیست رادریک استرینگ گریدبریزیم بهتراست وبعددرجدول اقساط ذخیره کنیم.
لطفاً دوستان راهنمایی بفرماییدکه استرینگ گریدموردنظرراچگونه تکمیل کنیم؟

Mahmood_M
شنبه 05 تیر 1395, 18:15 عصر
تعداد اقساط که مشخص میشه، تاریخ اولین قسط رو از کاربر بگیرید و برای اقساط دیگه هر بار به تاریخ یک ماه اضافه کنید، در اینصوت تاریخ هر قسط به راحتی بدست میاد
در یک حلقه از اولین قسط تا آخرین قست برید ( تعداد اقساط ) و هر بار تاریخ جدید رو ایجاد کنید و قسط و ثبت کنید و بعد قسط بعد
این حلقه رو داخل یک Transaction ایجاد کنید که از صحت ثبت اطلاعات همه ی اقساط مطمئن بشید، ابتدا Query مورد نظر رو StartTransaction کنید و در حلق اطلاعات رو ثبت کنید و بعد Commit کنید
یا بهتر اینه که عملیات Transaction و ثبت اطلاعات داخل یک SP در بانک نوشته بشه

amirkazem
پنج شنبه 10 تیر 1395, 13:40 عصر
باسلام
باکدزیرمحاسبه اقساط وتاریخ سررسیداقساط رادریک stringgride می ریزیم.

var mandeh,num_ghest,kol,i,mahi,sali:integer; date1,mahs,sals,rooz:string;
begin
GroupBox9.Visible:=true;
GroupBox9.BringToFront;
StringGrid1.Color:=clBlue;
mandeh:=strtoint(Edit15.Text);
num_ghest:=strtoint(Edit16.Text );
kol:=mandeh*4 div 100;
kol:=kol+mandeh;
Edit17.Text:=inttostr(kol div num_ghest);


GroupBox9.Visible :=true;
StringGrid1.ColCount:=3;
StringGrid1.Cells[0,0]:='ردیف';
StringGrid1.ColWidths[0]:=30;
StringGrid1.Cells[1,0]:='سررسیداقساط';
StringGrid1.Cells[2,0]:='مبلغ اقساط';
date1:=SolarDatePicker2.Text;
mahs := date1[6]+date1[7];
mahi:=StrToInt(mahs);
sals:=date1[1]+date1[2]+date1[3]+date1[4];
sali:=StrToInt(sals);
rooz:=date1[9]+date1[10];


for I := 1 to strtoint(Edit16.Text) do
begin
StringGrid1.Cells[0,i]:=inttostr(i);
StringGrid1.RowCount:= StringGrid1.RowCount+1;
StringGrid1.Cells[2,i]:=Edit17.Text;
if(mahi=12)then
begin
mahi:=1;
sali:=sali+1;
end
else
mahi:=mahi+1;
StringGrid1.Cells[1,i]:=inttostr(sali)+'/'+inttostr(mahi)+'/'+rooz;
GroupBox10.Visible :=true;
end;



حالاجهت ذخیره اطلاعات استرینگ گرید درجدول اقساط (شامل کدموتور، تاریخ قسط، مبلغ)باکدزیرعمل می کنیم .ولی متأسفانه این کدفقط 2رکوردبه جدول اضافه می کنه ومقادیرهردو یکسان هستش.
یعنی یک رکوردرا2بارتکرارمی کنه.

var I: Integer;
begin
for I := 1 to StringGrid1.RowCount+1 do
begin
ADOQuery7.Active :=true;
ADOQuery7.SQL.Clear ;
ADOQuery7.SQL.Add('insert into aghsat(code_motor,tarikh_ghest,mablagh)values('+Qu otedStr(EDit2.Text)+','+QuotedStr(StringGrid1.Cell s[1,i])+','+QuotedStr(StringGrid1.Cells[2,i])+')');
ADOQuery7.ExecSQL ;



دوستان لطفاً راهنمایی بفرماییدمشکل ازکجاست؟
ممنون!