Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Суммирование данных по строке SQL Access / 25 сообщений из 27, страница 1 из 2
27.08.2017, 12:38
    #39511147
maxseo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование данных по строке SQL Access
Добрый день!

Подскажите пожалуйста как правильно реализовать суммирование данных в таблице Access по строке с добавлением суммы в конкретную ячейку?

Таблица имеет к примеру следующий вид:

||Model||Total_Model||USA||Canada||Mexico||...etc.
||Mers || 100 || 40 || 50 || 10 ||
||BMW ||
||WMB ||

Вношу данные в таблицу по запросу:

Form11.ADOTotalOrder.SQL.Clear;
Form11.ADOTotalOrder.SQL.Add('UPDATE AutoMobile');
Form11.ADOTotalOrder.SQL.Add('SET '+Form11.DBLookupComboBox1.KeyValue+' = '+Form11.Edit1.Text+',');
Form11.ADOTotalOrder.SQL.Add('WHERE Model LIKE "'+Form11.DBLookupComboBox2.KeyValue+'"');
Form11.ADOTotalOrder.ExecSQL;

где - Form11.DBLookupComboBox1.KeyValue - Название страны в столбце
- Form11.Edit1.Text - кол-во конкретной модели машин в выбранной стране
- Form11.DBLookupComboBox2.KeyValue - Модель машины

Данный запрос работает. Добавил в него такую строчку

Form11.ADOTotalOrder.SQL.Add(' Total_Model = (SELECT '+Form11.DBLookupComboBox2.KeyValue+' SUM(USA, Canad, Mexica) FROM AutoMobile)');

Выдает ошибку в правильности формирование запроса - Syntax error in query expression '(Select BMW SUM(USA, Canad, Mexica) FROM AutoMobile)'

Понимаю, что неправильно создал запрос, подскажи пожалуйста как сделать его корректным или может есть другой вариант решения.

Спасибо
...
Рейтинг: 0 / 0
27.08.2017, 12:53
    #39511153
maxseo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование данных по строке SQL Access
Вот что то типа такого


Модель Всего США Канада Мексика ...
Мерседес 5 1 2 2
БМВ 10 4 5 1
Форд 15 10 3 2
...
Всего 30 15 10 5
...
Рейтинг: 0 / 0
27.08.2017, 13:34
    #39511170
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование данных по строке SQL Access
maxseo,

для того, чтобы таблица выглядела так,
надо ввести ** квадратную скобку [ перед буквами CSV --
столбики разделены обратным слешем
Модель Всего США Канада Мексика ...Мерседес 5 1 2 2БМВ 10 4 5 1Форд 15 10 3 2...Всего 30 15 10 5

**CSV=\]Модель \Всего \США \Канада \Мексика ...
Мерседес \5 \1 \2 \2
БМВ \10 \4 \5 \1
Форд \15 \10 \3 \2
...
Всего \30 \15 \10 \5[/CSV]
...
Рейтинг: 0 / 0
27.08.2017, 16:38
    #39511236
maxseo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование данных по строке SQL Access
ПЕНСИОНЕРКА,

Спасибо за совет, так конечно лучше смотрится. Только вот это никак не решит мою проблему ;)
...
Рейтинг: 0 / 0
27.08.2017, 17:16
    #39511241
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование данных по строке SQL Access
maxseo,

у вас видимо делфи, но что вы хотите получить строкой
автор(Select BMW SUM(USA, Canad, Mexica) FROM AutoMobile)'


могу предположить что сумму BMW трех стран

тогда
Код: sql
1.
2.
Select  SUM(USA + Canada + Mexico) FROM AutoMobile
 where model="BMW"



если часть цифр отсутствует, то запрос будет посложнее(придется проверять на NULL
...
Рейтинг: 0 / 0
27.08.2017, 17:19
    #39511242
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование данных по строке SQL Access
maxseo,

ИЛИ
Код: sql
1.
2.
3.
UPDATE AutoMobile
 SET [TOTAL_MODEL]=(USA + Canada + Mexico)
  where model="BMW"
...
Рейтинг: 0 / 0
27.08.2017, 17:29
    #39511243
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование данных по строке SQL Access
Как-то так (см.отчет1):
...
Рейтинг: 0 / 0
27.08.2017, 22:50
    #39511324
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование данных по строке SQL Access
упс..ошибочка вышла-заметил только щас.Вот правильно:
...
Рейтинг: 0 / 0
27.08.2017, 23:07
    #39511326
maxseo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование данных по строке SQL Access
Такой вариант работает, но не совсем корректно

UPDATE AutoMobile
SET [TOTAL_MODEL]=(USA + Canada + Mexico)
where model="BMW"

а именно
Модель | Всего | США | Канада | Мексика ... Мерседес | 123 | 1 | 2 | 3

не суммирует
...
Рейтинг: 0 / 0
28.08.2017, 00:07
    #39511332
maxseo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование данных по строке SQL Access
sdku,

Спасибо за отчет. Для начала по пробую разобрать его на бумаге.
...
Рейтинг: 0 / 0
28.08.2017, 00:58
    #39511344
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование данных по строке SQL Access
не тот файл приложил-пора спать-это окончательно:
...
Рейтинг: 0 / 0
28.08.2017, 14:56
    #39511698
maxseo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование данных по строке SQL Access
sdku,

подскажите, в таблице "дляПерекрестного" 0 и 1 в столбце Expr1000 - автоматически присваивается или Вы вручную внесли?
...
Рейтинг: 0 / 0
28.08.2017, 20:14
    #39511883
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование данных по строке SQL Access
maxseo,
"дляПерекрестного" это не таблица, а запрос на объединение и если Вы посмотрите SELECTы входящих в него запросов увидите что первое поле одного запроса =0, а другого =1 (это поле нужно для сортировки в дальнейшем, не важно какими будут значения этих полей,главное чтоб они расположили записи в нужной последовательности, при сортировке)
...
Рейтинг: 0 / 0
28.08.2017, 22:14
    #39511911
maxseo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование данных по строке SQL Access
sdku,

просто от не знания думал, что такой синтексис с 0 и 1 нельзя, ок ясно.

Подскажите, а такой вариант возможен:
1-ая таблица - 1-й столбец Model (с перечнем моделей), 2-й Сумма - тут общая сумма по модельно.

2-ая таблица - 1-й столбец Country (с перечнем стран), 2-й Сумма - тут общая сумма по странам.

3-я таблица тут по модельной и по странам указано количество
Модель, Страна, Кол-во
БМВ, США, 88
Форд, Канада, 44
Мерс, Мексика, 22
БМВ, Канада, 55
БМВ, Мексика, 5
Форд, США, 99
Мерс, США, 77
....
Всего

и с этой таблицы взять сумму.

И потом составить SQL запрос и получить
Модель Всего США Канада Мексика ...Мерседес 5 1 2 2БМВ 10 4 5 1Форд 15 10 3 2...Всего 30 15 10 5
...
Рейтинг: 0 / 0
29.08.2017, 17:07
    #39512348
maxseo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование данных по строке SQL Access
sdku,

Спасибо большое, разобрался, научился, получилось.
...
Рейтинг: 0 / 0
29.08.2017, 18:07
    #39512387
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование данных по строке SQL Access
maxseo,
не надо дублировать уже имеющиеся данные путем создания доп.таблиц(или Вы имели ввиду запросы-выражайтесь точнее)
и разве это не то,что Вы хотите видеть?
...
Рейтинг: 0 / 0
29.08.2017, 22:41
    #39512484
maxseo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование данных по строке SQL Access
sdku,

Да Вы не подсказали правильно решение. Но вот столкнулся теперь с проблемой - ну для меня по крайней мере.
Предположим мне надо будет добавить клиента.
Программа - открывается форма и пользователь заводит нового клиента.
И как тогда быть?
...
Рейтинг: 0 / 0
29.08.2017, 22:41
    #39512485
maxseo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование данных по строке SQL Access
maxseosdku,

Да Вы мне подсказали правильно решение. Но вот столкнулся теперь с проблемой - ну для меня по крайней мере.
Предположим мне надо будет добавить клиента.
Программа - открывается форма и пользователь заводит нового клиента.
И как тогда быть?
...
Рейтинг: 0 / 0
29.08.2017, 22:43
    #39512487
maxseo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование данных по строке SQL Access
sdku,

Получается мне надо сначала перебрать все вариант по модельно для этого клиента по базе - производитель, правильно?
...
Рейтинг: 0 / 0
30.08.2017, 01:34
    #39512533
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование данных по строке SQL Access
maxseo,
в перекрестном запросе столбцы добавятся автоматически
будем говорить об этом примере 20752565
-для таблицы "производитель" я форму не делал(это уж сами). Прямо в таблицу добавьте запись:марка=1,производство="п4"-в полеСоСписком "произведено" для марки BMW-222 появится вновь добавленный производитель "п4"
-занесите в форму новую запись для этой марки и производителя, запустите запрос "перекрестный"-в нем появился новый столбец с именем "п4"
-по мере появления новых производителей(занесения их в таблицу "производитель") и создания записей, для этого производителя, через форму (в таблице) "поступило" столбцы в запросе добавятся автоматически
-короче:добавляете производителя,создаете для него запись, в запросе появляется столбец с его именем
Разбирайтесь,дорабатывайте под себя.Удачи
...
Рейтинг: 0 / 0
30.08.2017, 01:44
    #39512535
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование данных по строке SQL Access
если ничего не получится (уже задействованы клиенты) приложите БД (нужны данные-сам придумывать не буду), что наработали и четко изложите что хотите получить
помогу,но только завтра или уже сегодня - в общем 30.08 днем
...
Рейтинг: 0 / 0
06.09.2017, 19:17
    #39516737
maxseo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование данных по строке SQL Access
sdku,

Добрый вечер! Только вот не давно получилось отписаться.

С БД Access работает посредством программы на Delphi. Когда заполняю форму поступления
- Выберете Страну - (DBLookComboBox1)
- Выберет Модель - (DBLookComboBox2)
- Введите Кол-во - (Edit1)

Если я выбираю ранее заведенные страны и модели то добавление и суммирование проходить ок.
Если создаю и потом выбираю новую страну и модель то строка с моделью добавляется и значение тоже, а вот столбец страна нет.
Как пример:
Модель Всего США Канада Мексика ...Мерседес 5 1 2 2БМВ 10 4 5 1Форд 15 10 3 2Новая модель10.........Всего 30 15 10 5

при это стоит только запрос Access, который формирует данную таблица обновить и нажать на кнопку выполнить, то столбец появляется сначала в запросе Access
TRANSFORM Sum([Cars Запрос].Quantity) AS [Sum-Quantity]
SELECT [Cars Запрос].Name_Auto, Sum([Cars Запрос].Quantity) AS [Sum-Quantity1]
FROM [Cars Запрос]
GROUP BY [Cars Запрос].Name_Auto
PIVOT [Cars Запрос].Name_C;

и соответственно столбец появляется в DBGrid.

Возможно надо сделать запрос на автоматическое обновление? Не подскажите есть такая возможность в Access
...
Рейтинг: 0 / 0
07.09.2017, 01:00
    #39516864
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование данных по строке SQL Access
maxseo,
Для таблиц марка и производитель я форм не делал (оставил это для Вас)
Порядок заполнения таблиц(форм которые Вы создадите):марка>производитель (так называемые справочники)>поступило-если добавить новую марку или производителя для уже присутствующей в перечне марки,то эти значения появятся в соответствующих поляхСоСписком формы "поступило"-строки при добавлении марки и столбцы при добавлении производителя появятся автоматически.
Пример:по этой БД 20752565
-добавьте запись в тбл."марки"-Лада
-в тбл."производители"добавьте:поле марка-5(код записи в тбл.марка для Лада),производитель-п4
-занесите в форму поступило запись:марка-Лада,производитель-п4,количество-от1 до 32000, сохраните запись сочетанием клавиш,перейдя на любую другую или закрыв форму
-запустите запрос перекрестный-добавилась строка Лада и столбец п4
Не изобретайте велосипед-все придумано до нас
...
Рейтинг: 0 / 0
07.09.2017, 12:33
    #39517260
maxseo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование данных по строке SQL Access
sdku,

Добрый день!

Спасибо за разъяснение, я точно так и делаю и все работает. Меня интересует вот что - авторзапустите запрос перекрестный-добавилась строка Лада и столбец п4, а как сделать автоматическое обновление запроса перекрестный? Так в с программой будут работать несколько пользователей и получаются, что они мне говорить мы добавили например клиента, товар, ... и мне надо перезапустить запрос перекрестный и тогда все появляется. Автоматически я понимаю это реализовать нет возможности
...
Рейтинг: 0 / 0
07.09.2017, 13:37
    #39517334
maxseo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Суммирование данных по строке SQL Access
или как вариант может есть такая возможность создать условие если добавлена новая страна, то выполнить запрос перекрестный.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Суммирование данных по строке SQL Access / 25 сообщений из 27, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]