![]() |
|
|
#1
|
|||
|
|||
|
Подскажите пожалуйста как посчитать сумму значений в dbgride.
К примеру в 14 колонке мне нужно посчитатьсумму всех значений. |
|
#2
|
||||
|
||||
|
как вариант, если записей не так много, то можно пробежаться циклом по таблице и подсчитать нужные значения...
|
|
#3
|
|||
|
|||
|
если можно пример, записей не много около 800.
|
|
#4
|
||||
|
||||
|
То нужно посчитать в запросе.
|
|
#5
|
|||
|
|||
|
я в sql запросох плохо орентируюсь dbgrid заполняю adoquery1.SQL.Add('select * from 1 where Поле2="'+ edit1.text +'" or Поле3="'+ edit1.Text +'"')
и как надо сформировать запрос чтобы label1 присвоилось сумма Поле14? |
|
#6
|
||||
|
||||
|
Код:
// сумма с циклом
procedure TMainForm.Button1Click(Sender: TObject);
var
path: string;
ITOG: integer;
begin
path := ExtractFilePath(paramstr(0)) + 'BD.mdb';
ADOTable1.Active := False;
ADOConnection1.Connected := False;
ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+path+';Persist Security Info=False;';
ADOConnection1.Connected:=true;
ADOTable1.TableName := 'base';
ADOTable1.Active := True;
ITOG := 0;
while not ADOTable1.Eof do
begin
ITOG := ITOG + ADOTable1.Fields[4].AsInteger;
ADOTable1.Next;
end;
edITOG.Text := IntToStr(ITOG); // запись суммы в Edit
end;
// сумма SQL запросом
procedure TMainForm.Button2Click(Sender: TObject);
var
path: string;
begin
path := ExtractFilePath(paramstr(0)) + 'BD.mdb';
ADOQuery1.Active := False;
ADOQuery1.Close;
ADOConnection1.Connected:=false;
ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+path+';Persist Security Info=False;';
ADOConnection1.Connected:=true;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='SELECT SUM(value4) FROM base';
ADOQuery1.Open;
ADOQuery1.Active:=true;
edITOG.Text := ADOQuery1.Fields[0].AsString; // запись суммы в Edit
end;смотри вложение Последний раз редактировалось RusMaXXX, 21.01.2013 в 20:47. |