![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Проблемка.Подскажите,пожалуйста..Есть DBGrid в которой необходимо подсчитать сумму значений в одном столбце (sum).Мне необходимо, чтобы подсчет суммы по столбцу подсчитывался и выводился в Edit.
|
|
#2
|
||||
|
||||
|
Можно по разному это организовать:
Либо путем перебора всего столбца и прибавлять все значения, либо сделать запрос типа: Код:
select sum(<имя_столбца>) from <имя_таблицы> |
|
#3
|
||||
|
||||
|
Цитата:
Именно такой запрос я и составляю.Ставлю код этого запроса на свойство Edita onclick.Ничего не происходит вообще. |
|
#4
|
||||
|
||||
|
Код покажи. Исправим.
|
|
#5
|
||||
|
||||
|
Цитата:
Код:
procedure TForm20.Edit1Change(Sender: TObject);
begin
form20.DBGrid1.DataSource:=form20.datasource2;
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select sum(Cena) from gfizio;');
Query1.Open;
end; |
|
#6
|
||||
|
||||
|
Наверно лучше будет вот так:
Код:
procedure TForm1.Edit1Click(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select sum(Cena) from gfizio;');
Query1.Open;
Edit1.Text:=Query1.Fields[0].AsString;
end; |
|
#7
|
|||
|
|||
|
я пробовал считает, но есть одна проблема у меня связанные таблицы первая база с данными фио а вторая содержит информ- приход расход остаток, вторая связанна с первой, так вот пересчитывает всё, например иванов - 200 руб, петров - 200 руб, а она мне сразу 400 руб. как быть?
|
|
#8
|
||||
|
||||
|
Структуру таблиц выложи. В твоем случае скрипт по другому выглядеть будеть.
|
|
#9
|
|||
|
|||
|
Если я правильно понял, то тебе нужна разбивка по клиентам.
Пусть ты вяжешь базы по ID - PersonID. Тогда запрос будет такой: Код:
SELECT PersonID, SUM(Cena) AS Summa FROM gfizio GROUP BY PersonID Если ты хочешь видеть и фамилии, то они прекрасно JOIN'яться по PersonID. Пусть ФИО лежат в полях LastName, FirstName, MiddleName в таблице Persons. тогда запрос будет такой: Код:
SELECT P.LastName, P.FirstName, P.MiddleName, SUM(G.Cena) AS Summa FROM gfizio G LEFT JOIN Persons P ON P.ID = G.PersonID GROUP BY P.LastName, P.FirstName, P.MiddleName Только в этом случае ты получишь несколько записей для каждого клиента, которые тебе надо будет уже на паскале сложить и вывести, например, в Memo: Код:
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('SELECT P.LastName, P.FirstName, P.MiddleName, SUM(G.Cena) AS Summa FROM gfizio G LEFT JOIN Persons P ON P.ID = G.PersonID GROUP BY P.LastName, P.FirstName, P.MiddleName');
Query1.Open;
Query1.First;
Memo1.Lines.Clear;
While Not Query1.EOF Do
Begin
Memo1.Lines.Add(Format('%s %s %s = %d',[Query1.Fields[0].AsString,Query1.Fields[1].AsString,Query1.Fields[2].AsString,Query1.Fields[3].AsInteger]));
Query1.Next;
End;
Query1.Close; // Не забываем закрыть.Это если я правильно понял вопрос. |
|
#10
|
|||
|
|||
|
главная таблица (база - dengi.db)- ITOG (DataITOG) и вторая - (база - dengi2.db) - DEN (dataDEN). вотрая связанна с первой LinKey2-key1 через МастерСоурс, необходимо вычислить сумму (summa) в базе DEN которая связанна с ITOG.
1) пробовал в первом случай - вычесляет полностью выводит сумму всей базы DEN 2) пробовал второй способ lmikle - выходит цифра 1 как быть? |
|
#11
|
|||
|
|||
|
Цитата:
Если данные уже отбражаются в dbgrid, то проще их в цикле, в котором можно поставить различные условия... |
|
#12
|
|||
|
|||
|
Значит что-то не так сделал. Проверяй запрос.
|