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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.12.2010, 16:42
smaw1989 smaw1989 вне форума
Прохожий
 
Регистрация: 17.12.2010
Сообщения: 14
Репутация: 10
По умолчанию Суммирование вычисляемых полей

Уважаемые, подскажите пожалуйста как просуммировать вычисляемые поля.

Имеются 3 таблицы: покупатель, накладная и список товаров в накладной. Таблица "покупатель" и таблица "накладная" связаны по номеру покупателя. "Накладная" и "список товаров в накладной" связаны по номеру накладной. Структура второй таблицы "список товаров" такая: номер товара- количество-цена- сумма. Товаров может быть несколько. Поле сумма- вычисляемое поле (количество * цена). Необходимо создать SQL-запрос, чтобы в поле "итого" таблицы "накладная" заносилась сумма вычисляемых полей "сумма" из таблицы "список товаров в накладной".

Что я сделал: создал в DataModule новый компонент Query и в DBGrid сослался на него вместо TTable. В свойстве SQL Query я прописал Select * from Shipping_list.db where (Customer_ID:=Customer_ID). Таблица "накладная" связалась с "покупатель", тут все ок.

Потом создал еще один Query. Когда задаю запрос вида Select Sum (поле_сумма_из_таблицы_список_товаров) From таблица_список_товаров.db в TQuery и ставлю свойство актив в тру выдает ошибку: Invalid use of keyword Token: ) Хотя никакой лишней скобки нету. Если вместо вычисляемого поля подставить другое, то ошибок не наблюдается.

Камрады, подскажите как быть, третий день бьюсь, все бестолку.
Ответить с цитированием
  #2  
Старый 17.12.2010, 18:11
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

сам запрос приведите пожалуйста.
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #3  
Старый 17.12.2010, 20:49
smaw1989 smaw1989 вне форума
Прохожий
 
Регистрация: 17.12.2010
Сообщения: 14
Репутация: 10
По умолчанию

Код:
SELECT SUM (sum) from Shipping_list_Detail.db

Shipping_list_Detail- список товаров в накладной, (sum)- вычисляемое поле. Сначала думал что sum зарезервированное имя, но при его переименовании свойство TQuery Active в true все-равно не ставится.
Ответить с цитированием
  #4  
Старый 17.12.2010, 21:36
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

sum действительно зарезервированое поле.
попробуйте так:

Код:
SELECT SUM (k.sum) as summa from Shipping_list_Detail.db k
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #5  
Старый 17.12.2010, 21:54
smaw1989 smaw1989 вне форума
Прохожий
 
Регистрация: 17.12.2010
Сообщения: 14
Репутация: 10
По умолчанию

Black Raider
Попробовал, все та же ошибка, переименовал вычисляемое поле sum в itogo, пишет Invalid field name: Itogo.
Ответить с цитированием
  #6  
Старый 19.12.2010, 19:51
smaw1989 smaw1989 вне форума
Прохожий
 
Регистрация: 17.12.2010
Сообщения: 14
Репутация: 10
По умолчанию

Быть может последовательность моих действий не верна? Создаю Query и DataSource, связываю их. В Query создаю запрос Select Sum (itogo) From Table.db, затем пытаюсь add all fields в datamodule2.Query, но пишет что то вычисляемое поле которое я хочу просуммировать инвалидно.
Ответить с цитированием
  #7  
Старый 19.12.2010, 20:06
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,031
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Суммировать по исходным полям.

Код:
select sum(quantiry*price) from table where ...
Ответить с цитированием
  #8  
Старый 19.12.2010, 21:33
smaw1989 smaw1989 вне форума
Прохожий
 
Регистрация: 17.12.2010
Сообщения: 14
Репутация: 10
По умолчанию

lmikle
Большое спасибо, так суммирует! Теперь как я понимаю нужно в TQuery, который содержит запрос из таблицы "накладная" прописать что поле "Сумма накладной" = SUM OF kol price from "Таблица список товаров"?

Последний раз редактировалось smaw1989, 19.12.2010 в 22:09.
Ответить с цитированием
  #9  
Старый 20.12.2010, 18:14
smaw1989 smaw1989 вне форума
Прохожий
 
Регистрация: 17.12.2010
Сообщения: 14
Репутация: 10
По умолчанию

Все разобрался!)

Последний раз редактировалось smaw1989, 21.12.2010 в 19:18.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter