Форум по программированию Delphi Sources

 



Вернуться   Форум по программированию Delphi Sources > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.06.2008, 14:49
Аватар для killpretty
killpretty killpretty вне форума
Прохожий
 
Регистрация: 04.11.2007
Сообщения: 33
Репутация: 10
Восклицание Подсчет суммы по столбцу DBGrid

Проблемка.Подскажите,пожалуйста..Есть DBGrid в которой необходимо подсчитать сумму значений в одном столбце (sum).Мне необходимо, чтобы подсчет суммы по столбцу подсчитывался и выводился в Edit.
Ответить с цитированием
  #2  
Старый 18.06.2008, 15:46
Аватар для Appolon
Appolon Appolon вне форума
Новичок
 
Регистрация: 10.01.2008
Адрес: гЕйск
Сообщения: 76
Репутация: 16
По умолчанию

Можно по разному это организовать:
Либо путем перебора всего столбца и прибавлять все значения, либо сделать запрос типа:
Код:
select sum(<имя_столбца>) from <имя_таблицы> 
, а полученный результат вставлять в Edit
__________________
From VasYa with LoVe...
Ответить с цитированием
  #3  
Старый 18.06.2008, 17:04
Аватар для killpretty
killpretty killpretty вне форума
Прохожий
 
Регистрация: 04.11.2007
Сообщения: 33
Репутация: 10
Сообщение

Цитата:
Сообщение от Appolon
Можно по разному это организовать:
Либо путем перебора всего столбца и прибавлять все значения, либо сделать запрос типа:
Код:
select sum(<имя_столбца>) from <имя_таблицы> 
, а полученный результат вставлять в Edit

Именно такой запрос я и составляю.Ставлю код этого запроса на свойство Edita onclick.Ничего не происходит вообще.
Ответить с цитированием
  #4  
Старый 18.06.2008, 21:52
Аватар для Appolon
Appolon Appolon вне форума
Новичок
 
Регистрация: 10.01.2008
Адрес: гЕйск
Сообщения: 76
Репутация: 16
По умолчанию

Код покажи. Исправим.
__________________
From VasYa with LoVe...
Ответить с цитированием
  #5  
Старый 19.06.2008, 02:34
Аватар для killpretty
killpretty killpretty вне форума
Прохожий
 
Регистрация: 04.11.2007
Сообщения: 33
Репутация: 10
По умолчанию

Цитата:
Сообщение от Appolon
Код покажи. Исправим.

Код:
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  
Старый 19.06.2008, 12:24
Аватар для Appolon
Appolon Appolon вне форума
Новичок
 
Регистрация: 10.01.2008
Адрес: гЕйск
Сообщения: 76
Репутация: 16
По умолчанию

Наверно лучше будет вот так:
Код:
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  
Старый 16.07.2008, 21:55
Директор ВЭБ Директор ВЭБ вне форума
Прохожий
 
Регистрация: 15.07.2008
Сообщения: 19
Репутация: 10
По умолчанию

я пробовал считает, но есть одна проблема у меня связанные таблицы первая база с данными фио а вторая содержит информ- приход расход остаток, вторая связанна с первой, так вот пересчитывает всё, например иванов - 200 руб, петров - 200 руб, а она мне сразу 400 руб. как быть?
Ответить с цитированием
  #8  
Старый 17.07.2008, 14:08
Аватар для Appolon
Appolon Appolon вне форума
Новичок
 
Регистрация: 10.01.2008
Адрес: гЕйск
Сообщения: 76
Репутация: 16
По умолчанию

Структуру таблиц выложи. В твоем случае скрипт по другому выглядеть будеть.
__________________
From VasYa with LoVe...
Ответить с цитированием
  #9  
Старый 17.07.2008, 15:34
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 7,512
Версия Delphi: 7, XE3, 10.2
Репутация: 49088
По умолчанию

Если я правильно понял, то тебе нужна разбивка по клиентам.
Пусть ты вяжешь базы по 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  
Старый 19.07.2008, 19:05
Директор ВЭБ Директор ВЭБ вне форума
Прохожий
 
Регистрация: 15.07.2008
Сообщения: 19
Репутация: 10
По умолчанию

главная таблица (база - dengi.db)- ITOG (DataITOG) и вторая - (база - dengi2.db) - DEN (dataDEN). вотрая связанна с первой LinKey2-key1 через МастерСоурс, необходимо вычислить сумму (summa) в базе DEN которая связанна с ITOG.

1) пробовал в первом случай - вычесляет полностью выводит сумму всей базы DEN
2) пробовал второй способ lmikle - выходит цифра 1

как быть?
Ответить с цитированием
  #11  
Старый 23.07.2008, 13:13
FOX87 FOX87 вне форума
Прохожий
 
Регистрация: 22.05.2008
Сообщения: 5
Репутация: 10
По умолчанию 111

Цитата:
Сообщение от Директор ВЭБ
главная таблица (база - dengi.db)- ITOG (DataITOG) и вторая - (база - dengi2.db) - DEN (dataDEN). вотрая связанна с первой LinKey2-key1 через МастерСоурс, необходимо вычислить сумму (summa) в базе DEN которая связанна с ITOG.

1) пробовал в первом случай - вычесляет полностью выводит сумму всей базы DEN
2) пробовал второй способ lmikle - выходит цифра 1

как быть?



Если данные уже отбражаются в dbgrid, то проще их в цикле, в котором можно поставить различные условия...
Ответить с цитированием
  #12  
Старый 23.07.2008, 14:47
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 7,512
Версия Delphi: 7, XE3, 10.2
Репутация: 49088
По умолчанию

Значит что-то не так сделал. Проверяй запрос.
Ответить с цитированием
Ответ



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:05.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources", 2004-2019

ВКонтакте   Facebook   Twitter