سلام من میخوام تابع رگرسیون رو داخل دلفی بنویسم

کد:
 
[VB]Unit stat; 
interface 
{$IFOPT N+} 
  Type Real=double; 
{$ENDIF} 
Type StatObject=Object 
                  Procedure Clear; 
                  Procedure Insert(x,y:real); 
                  Function Cnt:Word; 
                  Function SX:Real; 
                  Function SX2:Real; 
                  Function MX:Real; 
                  Function SDX:Real; 
                  Function SDXN:Real; 
                  Function SY:Real; 
                  Function SY2:Real; 
                  Function MY:Real; 
                  Function SDY:Real; 
                  Function SDYN:Real; 
                  Function LRA:Real; 
                  Function LRB:Real;   
                  Function COR:Real; 
                  Private 
                  sumx,sumy:real; 
                  sumx2,sumy2:Real; 
                  SumXY:Real; 
                  n:word; 
                End; 
Implementation 
Procedure StatObject.Clear; 
Begin 
  sumx:=0; 
  sumy:=0; 
  sumx2:=0; 
  sumy2:=0; 
  SumXY:=0; 
  n:=0; 
End; 
Procedure StatObject.insert(x,y:real); 
Begin 
  sumx:=sumx+x; 
  sumy:=sumy+y; 
  sumx2:=sumx2+sqr(x); 
  sumy2:=sumy2+sqr(y); 
  SumXY:=sumXY+x*y; 
  inc(n); 
End; 
Function StatObject.Cnt; Begin cnt:=n;     End; 
Function StatObject.SX;  Begin SX:=SumX;   End; 
Function StatObject.SX2; Begin SX2:=SumX2; End; 
Function StatObject.SY;  Begin SY:=SumY;   End; 
Function StatObject.SY2; Begin SY2:=SumY2; End; 
Function StatObject.MX; 
Begin 
 MX:=SumX/n  
End; 
Function StatObject.MY; 
Begin 
MY:=SumY/n 
End; 
Function StatObject.SDX; 
Begin 
SDX:=(SumX2-Sqr(sumx))/(n-1)  
End; 
Function StatObject.SDXN; 
Begin 
SDXN:=(SumX2-Sqr(sumx))/n 
End; 
Function StatObject.SDY; 
Begin 
SDY:=(SumY2-Sqr(sumy))/(n-1) 
End; 
Function StatObject.SDYN; 
Begin 
SDYN:=(Sumy2-Sqr(sumy))/n 
End; 
Function StatObject.Cor; 
Begin 
Cor:=(n*SumXY-Sumx*sumy)/Sqrt(((n*SumX2-sumx*sumx))*(n*sumy2-sumy*sumy)) 
End; 
Function StatObject.LRA; 
Begin 
 lra:=MY-LRB*MX; 
End; 
Function StatObject.LRB; 
Begin 
lrb:=(n*Sumxy-sumx*sumy)/(n*sumx2-sumx*sumx) 
End; 
end.
این کد تابع رگرسیون تو دلفی مشکل من اینکه الان باید x و y رو از درون دیبیگرید بخونه ک کدش مشابهشو با سرچ کردن پیدا کردم که کد جمع کنندس


کد:
function SUMSomething: Float;
var
  i: Integer;
  Sum: Currency;
begin
  Sum := 0;
  for i := 1 to DBGrid1.SelectedRows.Count do
   begin
    Table1.GotoBookMark
      (Pointer(DBGrid1.SelectedRows.Items[i-1])) ;
    {
     The TDBGrid component keeps all the
     selections as Bookmarks in a
     TStringList, and all the Bookmarks
     must be converted to a Pointer
     (what they really are) before using it.




    }
     Sum := Sum +
            Table1.FieldByName('AField').AsFloat;
   end;
  Result := Sum;
end;
سوالم اینه چطور اینارو باهم ادغام کنم وقتی کلیک کردم روی دکمم دیتا ها رو بخونه از دیتا بیس عملیات رگرسیون رو انجام بده و مقدار رو بهم برگردونه

یک راه دیگم داره من این تابع رو داخل اسکیوال با کوئری نوشتم حالا راهی باشه بتونم اون کوئری رو داخل برنامم بخونمش
کد:
create function gheimata(@z int)
returns float as
begin
declare @s1 float,@s2 float,@s3 float,
@s4 float,@s5 float,@a float,@b float,@j float,@n float
select @s1=SUM(x*y),@s2=SUM(x),@s3=SUM(y),@s4=SUM(x*x)
,@s5=(SUM(x)*SUM(x))from tbl1
set @n=(select COUNT(*) from tbl1)
set @b=((@n*@s1)-@s2*@s3)/((@n*@s4)-@s5)
set @a=((select AVG(y)from tbl1)-(select AVG(x)from tbl1)*@b)
set @j=(@a+(@b*@z))
return @j
end
اینم کوئری ممنون میشم پاسخ بدید <3