PDA

View Full Version : سوال: محاسبه ستون باقيمانده



masoud_salimy
دوشنبه 25 مرداد 1395, 23:15 عصر
با سلام مجدد به اساتيد محترم
يه جدول مالي داريم كه ستونهاي بدهكار و بستانكار داره. اگر بخوام يه ستون باقيمانده توي جدول اضافه كنم منطقي نيست چون اگر يكي از ركوردها رو حذف كنيم و يا ركورد جديدي در اواسط ركوردها اظافه كنيم همه چي بهم ميخوره و بازم بايد برگرديم و از اول كل باقيماندهها رو حساب كنيم، باتوجه به اينكه از sqlserver استفاده ميكنم فكر ميكنم كه بهترين كار استفاده از تريگر و ويو هست اگر درست نيست لطفاً راهنمايي كنيد
اگر هم درسته كه متاسفانه من تاحالا اين كار رو نكردم و نميتونم انجامش بدم. اگه كسي از دوستا اين كار رو كرده لطف كنه و يه مثال بزنه و توضيح بده.

hp1361
سه شنبه 26 مرداد 1395, 08:02 صبح
با سلام مجدد به اساتيد محترم
يه جدول مالي داريم كه ستونهاي بدهكار و بستانكار داره. اگر بخوام يه ستون باقيمانده توي جدول اضافه كنم منطقي نيست چون اگر يكي از ركوردها رو حذف كنيم و يا ركورد جديدي در اواسط ركوردها اظافه كنيم همه چي بهم ميخوره و بازم بايد برگرديم و از اول كل باقيماندهها رو حساب كنيم، باتوجه به اينكه از sqlserver استفاده ميكنم فكر ميكنم كه بهترين كار استفاده از تريگر و ويو هست اگر درست نيست لطفاً راهنمايي كنيد
اگر هم درسته كه متاسفانه من تاحالا اين كار رو نكردم و نميتونم انجامش بدم. اگه كسي از دوستا اين كار رو كرده لطف كنه و يه مثال بزنه و توضيح بده.

سلام

شما به 2 طریق میتونید این کار رو انجام بدید:
1- در سمت بانک اطلاعاتی
2- در سمت کلاینت(کاربر)

برای روش اول در کویری تولید شده فیلدی مثلا بنام ِDiff در کویریتون خواهید داشت که مقدارش حاصل کسر دو فیلد مورد نظر شماست. مثلا


select previous, Present, previous-Present as Difference from tablename


در روش دوم هم بفرض از FDQuery استفاده میکنید و درون اون یک فیلد محاسباتی تولید میکنید و در رویداد OnGetText ش حاصل کسر دو ستون مورد نظر رو به پارامتر Text تخصیص میدید:


procedure TForm1.FDQuery1DiffGetText(Sender: TField; var Text: string;
DisplayText: Boolean);
begin
Text := FDQuery1.FieldByName('Column1').AsInteger - FDQuery1.FieldByName('Column2').AsInteger;
end;


موفق باشیم