Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2016, 14:12   #1
Armageddets
Форумчанин
 
Регистрация: 30.06.2012
Сообщений: 145
По умолчанию Сумма полей через запрос Access

Доброго времени суток, уважаемые эксперты. Есть БД со связями между таблицами в Access. В таблице "Сводка" в поле "Всего_пострадало" нужно посчитать сумму таких полей: Погибло на пожаре, Пострадавших на пожарах, Спасено людей на пожарах, Оказано помощи населению.

Задача стоит с помощью запроса посчитать сумму этих полей и вывести в поле "Всего_пострадало". У меня выбивает ошибки при моих попытках это сделать - делаю что-то неправильно.

Я пробовал следующие варианты:
1)
Код:
ADOQuery1.SQL.Add('UPDATE Сводка SET Сводка.Всего_пострадало = [Погибло на пожаре]+[Пострадавших на пожарах]+[Спасено людей на пожарах]+[Оказано помощи населению]');
2)
Код:
ADOQuery1.SQL.Add('select sum(Сводка.[Погибло на пожаре]+Сводка.[Пострадавших на пожарах]) Сводка.Всего_пострадало, Сводка.[Погибло на пожаре] from Сводка group by Код');
В первом случае пишет "Выбранная последовательность сортировки не поддерживается системой".
Во втором случае - "Ошибка синтаксиса (пропущен оператор)".

Еще пробовал создавать запрос с группировкой в самом Access, но не знаю как его правильно вызвать - пробовал разные варианты, но выбивает ошибки (Офис 2003)...

Вручную пробегать по всей таблице и считать я умею, но нужно через запросс сделать - причем желательно из делфи, ноесли такого варианта нет нормального, тогда через сам аццесс. Подскажите как лучше сделать - заранее спасибо за Ваши советы.
Armageddets вне форума Ответить с цитированием
Старый 07.12.2016, 14:22   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

А так:
Код:
select sum(Сводка.[Погибло на пожаре]+sum(Сводка.[Пострадавших на пожарах]) AS Всего_пострадало from Сводка group by Код
возможно еще потребует наличия поля Код в списке селекта. Там еще с NULL возможны проблемы
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 07.12.2016 в 14:24.
Аватар вне форума Ответить с цитированием
Старый 07.12.2016, 14:37   #3
Armageddets
Форумчанин
 
Регистрация: 30.06.2012
Сообщений: 145
По умолчанию

Все равно ошибка синтаксиса выбивает.

На втором юните на 130 строке - этот запрос... Я уже думаю может я что-то с самой таблицей намудрил...

Прилагаю весь проект:
Проект
Armageddets вне форума Ответить с цитированием
Старый 07.12.2016, 14:51   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

а так?

Код:
 ADOQuery1.SQL.Add('select sum([Сводка].[Погибло на пожаре] + [Сводка].[Пострадавших на пожарах]) AS Всего_пострадало from [Сводка] group by [Код]');
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.12.2016, 14:57   #5
Armageddets
Форумчанин
 
Регистрация: 30.06.2012
Сообщений: 145
По умолчанию

Тоже пишет выбранная последовательность не поддерживается операционной системой... (У меня Windows XP)

Последний раз редактировалось Armageddets; 07.12.2016 в 15:06.
Armageddets вне форума Ответить с цитированием
Старый 07.12.2016, 15:30   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

А в какой языковой версии ACCESS создана база данных?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.12.2016, 15:39   #7
Armageddets
Форумчанин
 
Регистрация: 30.06.2012
Сообщений: 145
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А в какой языковой версии ACCESS создана база данных?
В русской
Armageddets вне форума Ответить с цитированием
Старый 07.12.2016, 15:44   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

У меня тоже эта ошибка просто для
SELECT * FROM Сводка ORDER by Код
Смотрю в ACCES параметры Общие и порядок сортировки базы данных Универсальный. А среди языков русского нет, украинский и всякие китайские и прочие. У меня поэтому не может. Все предположительно. Если в своем ACCESS создам базу то такой ошибки не будет.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 07.12.2016 в 15:48.
Аватар вне форума Ответить с цитированием
Старый 07.12.2016, 15:54   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Armageddets Посмотреть сообщение
Тоже пишет выбранная последовательность не поддерживается операционной системой...
не поленился, проверил.

у меня строчка
Код:
  ADOQuery1.SQL.Add('select sum([Сводка].[Погибло на пожаре] + [Сводка].[Пострадавших на пожарах]) AS Всего_пострадало from [Сводка] group by [Код]');
(вызывается меню "Таблица - Сводка"
работает без нареканий.
Window 7

p.s. только файлик BD.mdb, который Вы приложили к архиву оказался с пустыми таблицами, пришлось сперва внести тестовые данные...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.12.2016, 16:46   #10
Armageddets
Форумчанин
 
Регистрация: 30.06.2012
Сообщений: 145
По умолчанию

Заново с нуля создал эту БД и у меня заработало суммирование. Но теперь когда я пытаюсь отобразить все поля вместе с суммированием выходит ошибка: "Попытка выполнить запрос, который не включает выражение '№ акта' как часть статистической функции или группы". Если из запроса убираю это поле - выдает тоже самое но по следующему полю... А вот с отображением только с первым полем, например - все отлично отображает.

Код:
ADOQuery1.SQL.Add('select Сводка.[Код], Сводка.[№ акта], Сводка.[Погибло при пожаре], Сводка.[Пострадавших на пожарах], Сводка.[Спасено людей на пожарах], Сводка.[Оказано помощи населению], ');
  ADOQuery1.SQL.Add('sum(Сводка.[Погибло при пожаре] + Сводка.[Пострадавших на пожарах] + Сводка.[Спасено людей на пожарах] + Сводка.[Оказано помощи населению]) AS [Всего_пострадало] from Сводка group by Код');
Вот измененный проект:
Проект
Armageddets вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сумма полей Memo Serotonuwen C++ Builder 1 01.08.2014 10:31
сумма полей по выборке murena000 Microsoft Office Access 0 19.10.2012 12:49
Запрос на добавления полей в таблице базы данных через phpMyAdmin SwanHeart PHP 6 11.07.2011 20:12
Смена пароля БД Access через запрос (C#) Raptor Помощь студентам 0 21.11.2009 15:37