|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Подсчет суммы по столбцу DBGrid
Проблемка.Подскажите,пожалуйста..Есть DBGrid в которой необходимо подсчитать сумму значений в одном столбце (sum).Мне необходимо, чтобы подсчет суммы по столбцу подсчитывался и выводился в Edit.
|
#2
|
||||
|
||||
Можно по разному это организовать:
Либо путем перебора всего столбца и прибавлять все значения, либо сделать запрос типа: Код:
select sum(<имя_столбца>) from <имя_таблицы> From VasYa with LoVe... |
#3
|
||||
|
||||
Цитата:
Именно такой запрос я и составляю.Ставлю код этого запроса на свойство Edita onclick.Ничего не происходит вообще. |
#4
|
||||
|
||||
Код покажи. Исправим.
From VasYa with LoVe... |
#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; From VasYa with LoVe... |
#7
|
|||
|
|||
я пробовал считает, но есть одна проблема у меня связанные таблицы первая база с данными фио а вторая содержит информ- приход расход остаток, вторая связанна с первой, так вот пересчитывает всё, например иванов - 200 руб, петров - 200 руб, а она мне сразу 400 руб. как быть?
|
#8
|
||||
|
||||
Структуру таблиц выложи. В твоем случае скрипт по другому выглядеть будеть.
From VasYa with LoVe... |
#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
|
|||
|
|||
111
Цитата:
Если данные уже отбражаются в dbgrid, то проще их в цикле, в котором можно поставить различные условия... |
#12
|
|||
|
|||
Значит что-то не так сделал. Проверяй запрос.
|