|  | 
 
 | 
| 
 | |||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
|  | 
|  | Опции темы | Поиск в этой теме | Опции просмотра | 
| 
			 
			#1  
			
			
			
			
		 | ||||
| 
 | ||||
|  Подсчет суммы по столбцу DBGrid Проблемка.Подскажите,пожалуйста..Есть 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  
			
			
			
			
		 | |||
| 
 | |||
|  111 Цитата: 
 Если данные уже отбражаются в dbgrid, то проще их в цикле, в котором можно поставить различные условия... | 
| 
			 
			#12  
			
			
			
			
		 | |||
| 
 | |||
|   Значит что-то не так сделал. Проверяй запрос. |