PDA

View Full Version : اضافه کردن ستون مانده حساب با جمع تجمعی در FastReport



M@hdi
شنبه 14 آبان 1384, 08:36 صبح
با عرض سلام و تبریک عید فطر به دوستان
من در FastReport دو ستون دریافت و پرداخت دارم . میخوام یک ستون اضافه بشه به نام مانده که حاصل تفریق این دو فیلد در اون قرار بگیره و در ردیفهای بعد به صورت تجمعی اضافه بشه ( یعنی مقدارش با ردیف قبل جمع بشه ) .
با تشکر

Babak-Aghili
شنبه 14 آبان 1384, 09:43 صبح
مگه با تعریف کردن Calculated Field مشکلت حل نمیشه ؟

M@hdi
یک شنبه 15 آبان 1384, 12:52 عصر
بابک جان میشه توضیح بدی چطوری میتونم این فیلد را تعریف کنم

Babak-Aghili
دوشنبه 16 آبان 1384, 01:42 صبح
به کتاب دلفی رجوع کنی بهتره ولی حالا ...

روی کامپوننت Table... ‌دابل کلیک و AddAllFileds ... بعدش هم AddNew Field .... در دیالوگ جدید ، یک فیلد Calculted تعریف میکنیم ...

سپس در رویداد OnCalcRecord - یا اسمی مشابه همین بودش ) .. عملیات ریاضی مورد نظر را مینویسیم .. ..

More Info ??

M@hdi
دوشنبه 16 آبان 1384, 08:57 صبح
فکر کنم منظور سوال من را نگرفتید . اجازه بدید یک مثال بزنم مثلا در جدول دو فیلد 1 و 2 را داریم و میخواهیم فیلد 3 را به صورت زیر داشته باشیم :

1 *********** 2 ************* 3
دریافت ******** پرداخت ******** مانده
1000 ******* 0 ******* 1000 = 1-2
1000 ******* 0 ******* 2000 = 1-2+3
0 ******* 500 ******* 1500 = 1-2+3

اگه امکان داره کدش را بنویسید . من با Calculated F فقط تونستم حاصل تفریق دو ستون 1و 2 را بدست بیارم.

fahimi
جمعه 18 آذر 1384, 07:01 صبح
متاسفانه من این مشکل را دارم ولی متاسفانه جوابی برای آن پیدا نکرده ام فعلا از quick report در این مورد خاص استفاده میکنم عمده استفاده جمع تجمعی در دفترکل و معین حساب ها میباشد در ضمن در آخرین ورژن farepot 3.19 که اکامان فارسی و حتی پانل فارسی هم به آن اضافه شده است این مشکل وجود دارد

jafari1
جمعه 16 دی 1384, 16:27 عصر
سلام
من فکر میکنم با اضافه کردن یک فیلد در بانک اطلاعاتی به عنوان مانده و محاسبه آن قبل از چاپ گزارش مشکلتان را حل کند

programersa
چهارشنبه 28 دی 1384, 10:40 صبح
سلام
من خودم از یک query که برروی فرمم قرادادم این کار را به راحتی انجام می دهم و این کار قبل از انجام گزارش گرفتن است . از دستورات sql استفاده می کنم حتی برای اینکه نشان بدم حاصل بدهکار است یا بستانکار فرمت برایش تعریف کردم و گفتم مانده های منفی را با پرانتز نشان دهد . خیلی بهتر از اینه که به خواهی یک فیلد جدا تعریف کنی و یک فضای بیخودی اختصاص بدهی .
یاحق.

jafari1
چهارشنبه 28 دی 1384, 22:03 عصر
ممکن است کل دستورات داخل query را بنویسید

jafari1
پنج شنبه 17 خرداد 1386, 21:10 عصر
اگر لطف کنید دستور اسکیوال به شکل مورد نظر بالا را بنویسید متشکر میشوم

reza1351
پنج شنبه 18 مرداد 1386, 13:18 عصر
خیلی راحته! فرض کنید فیلدهای زیر وجود دارد:
NDebit: بدهکار
NCredit:بستانکار
Memo1: مانده
ابتدای گزارش: Memo1.text:=0;
قبل از چاپ هر رکورد:
Memo1.text := Memo1.text + NDebit - NCredit
البته دستورات به صورت فوق قابل اجرا نیست ولی با رعایت Syntax دستورات براحتی قابل اجراست.
من خودم جواب گرفته ام. اگر لازم بود نمونه برنامه موجود است.

sepehr_a
جمعه 19 مرداد 1386, 23:37 عصر
اگه ممکنه یک نمونه برنامه رو لینک بذارید تا بهتر بفهمیم

فرزاد دلفی باز
چهارشنبه 21 شهریور 1386, 13:14 عصر
این مشکل منم هست اگه کسی نمونه برنامه یا کدی داره بگه عالی میشه.....

reza1351
جمعه 23 شهریور 1386, 04:31 صبح
var Debit, Credit, Remind : Extended;
procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
begin
Remind := Remind + <QList."NDebit"> - <QList."NCredit">;
end;
//--------------------------------------------------------------
procedure MasterData1OnAfterPrint(Sender: TfrxComponent);
begin
Debit := Debit + <QList."NDebit">;
Credit := Credit + <QList."NCredit">;
end;
//--------------------------------------------------------------
procedure Memo13OnBeforePrint(Sender: TfrxComponent);
begin
if Debit > Credit then
begin
TfrxMemoView(Sender).Text :='ÈÏ';
TfrxMemoView(Sender).Font.Color := clGreen;
end
else if Credit > Debit then
begin
TfrxMemoView(Sender).Text :='ÈÓ';
TfrxMemoView(Sender).Font.Color := clRed;
end
else
begin
TfrxMemoView(Sender).Text :='-';
TfrxMemoView(Sender).Font.Color := clBlack;
end;
end;
//--------------------------------------------------------------
procedure Memo24OnBeforePrint(Sender: TfrxComponent);
begin
if Remind > 0 then
begin
TfrxMemoView(Sender).Text :='ÈÏ';
TfrxMemoView(Sender).Font.Color := clGreen;
Memo23 .Font.Color := clGreen;
end
else if Remind < 0 then
begin
TfrxMemoView(Sender).Text :='ÈÓ';
TfrxMemoView(Sender).Font.Color := clRed;
Memo23 .Font.Color := clRed;
end
else
begin
TfrxMemoView(Sender).Text :='-';
TfrxMemoView(Sender).Font.Color := clBlack;
Memo23 .Font.Color := clBlack;
end;
end;
//--------------------------------------------------------------
procedure Memo7OnBeforePrint(Sender: TfrxComponent);
begin
if Debit > Credit then
TfrxMemoView(Sender).Font.Color := clGreen
else if Credit > Debit then
TfrxMemoView(Sender).Font.Color := clRed
else
TfrxMemoView(Sender).Font.Color := clBlack;
end;
//--------------------------------------------------------------
begin
Debit := 0;
Credit := 0;
Remind := 0;
end.

Valadi
جمعه 23 شهریور 1386, 08:14 صبح
جناب reza1351
ممنون
اگر امکان داره سورس این برنامه بصورت کوچک در سایت قرار بده تا دیگران به این مشکل خورد سریع مشکلشان حل شود

با آرزوی موفقیت و سربلندی

reza1351
جمعه 23 شهریور 1386, 12:55 عصر
جناب reza1351
ممنون
اگر امکان داره سورس این برنامه بصورت کوچک در سایت قرار بده تا دیگران به این مشکل خورد سریع مشکلشان حل شود

با آرزوی موفقیت و سربلندی

این دستورات در script فست رپورت باید نوشته شود فقط نتونستم به صورت چپ به راست در
سایت کپی کنم.

masoodi6
یک شنبه 20 مرداد 1392, 19:32 عصر
دوستان اگه کسی میتونه در این http://barnamenevis.org/showthread.php?399702-%D9%85%D9%86-%D9%85%D8%B4%DA%A9%D9%84-%D9%85%D8%A7%D9%86%D8%AF%D9%87-%D8%AD%D8%B3%D8%A7%D8%A8-%D8%AF%D8%B1-%D8%A7%DA%A9%D8%B3%D8%B3-%D8%AF%D8%A7%D8%B1%D9%85&p=1846638#post1846638 کمکم کنه
ممنون میشم

gohari244
یک شنبه 05 اسفند 1397, 09:32 صبح
فرض کنید دو ستور داریم با عنوان bed و bes در دیتابیس- حالا بعد از اینکه گزارشمون آماده شد میخوایم یک ستون اضافه کنم که مانده رو بهمون بده واسه اینکار توی گزارش یک ستون با عنوان mande اضافه میکنیم و داخلش فرمول زیر می نویسیم



[mande.value+<ADOQuery1."bed">-<ADOQuery1."bes">]