|
Суммирование данных по строке SQL Access
|
|||
---|---|---|---|
#18+
Добрый день! Подскажите пожалуйста как правильно реализовать суммирование данных в таблице 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)' Понимаю, что неправильно создал запрос, подскажи пожалуйста как сделать его корректным или может есть другой вариант решения. Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2017, 12:38 |
|
Суммирование данных по строке SQL Access
|
|||
---|---|---|---|
#18+
Вот что то типа такого Модель Всего США Канада Мексика ... Мерседес 5 1 2 2 БМВ 10 4 5 1 Форд 15 10 3 2 ... Всего 30 15 10 5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2017, 12:53 |
|
Суммирование данных по строке SQL Access
|
|||
---|---|---|---|
#18+
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] ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2017, 13:34 |
|
Суммирование данных по строке SQL Access
|
|||
---|---|---|---|
#18+
ПЕНСИОНЕРКА, Спасибо за совет, так конечно лучше смотрится. Только вот это никак не решит мою проблему ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2017, 16:38 |
|
Суммирование данных по строке SQL Access
|
|||
---|---|---|---|
#18+
maxseo, у вас видимо делфи, но что вы хотите получить строкой автор(Select BMW SUM(USA, Canad, Mexica) FROM AutoMobile)' могу предположить что сумму BMW трех стран тогда Код: sql 1. 2.
если часть цифр отсутствует, то запрос будет посложнее(придется проверять на NULL ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2017, 17:16 |
|
Суммирование данных по строке SQL Access
|
|||
---|---|---|---|
#18+
maxseo, ИЛИ Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2017, 17:19 |
|
Суммирование данных по строке SQL Access
|
|||
---|---|---|---|
#18+
Как-то так (см.отчет1): ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2017, 17:29 |
|
Суммирование данных по строке SQL Access
|
|||
---|---|---|---|
#18+
упс..ошибочка вышла-заметил только щас.Вот правильно: ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2017, 22:50 |
|
Суммирование данных по строке SQL Access
|
|||
---|---|---|---|
#18+
Такой вариант работает, но не совсем корректно UPDATE AutoMobile SET [TOTAL_MODEL]=(USA + Canada + Mexico) where model="BMW" а именно Модель | Всего | США | Канада | Мексика ... Мерседес | 123 | 1 | 2 | 3 не суммирует ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2017, 23:07 |
|
Суммирование данных по строке SQL Access
|
|||
---|---|---|---|
#18+
sdku, Спасибо за отчет. Для начала по пробую разобрать его на бумаге. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2017, 00:07 |
|
Суммирование данных по строке SQL Access
|
|||
---|---|---|---|
#18+
не тот файл приложил-пора спать-это окончательно: ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2017, 00:58 |
|
Суммирование данных по строке SQL Access
|
|||
---|---|---|---|
#18+
sdku, подскажите, в таблице "дляПерекрестного" 0 и 1 в столбце Expr1000 - автоматически присваивается или Вы вручную внесли? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2017, 14:56 |
|
Суммирование данных по строке SQL Access
|
|||
---|---|---|---|
#18+
maxseo, "дляПерекрестного" это не таблица, а запрос на объединение и если Вы посмотрите SELECTы входящих в него запросов увидите что первое поле одного запроса =0, а другого =1 (это поле нужно для сортировки в дальнейшем, не важно какими будут значения этих полей,главное чтоб они расположили записи в нужной последовательности, при сортировке) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2017, 20:14 |
|
Суммирование данных по строке SQL Access
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2017, 22:14 |
|
Суммирование данных по строке SQL Access
|
|||
---|---|---|---|
#18+
sdku, Спасибо большое, разобрался, научился, получилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2017, 17:07 |
|
Суммирование данных по строке SQL Access
|
|||
---|---|---|---|
#18+
maxseo, не надо дублировать уже имеющиеся данные путем создания доп.таблиц(или Вы имели ввиду запросы-выражайтесь точнее) и разве это не то,что Вы хотите видеть? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2017, 18:07 |
|
Суммирование данных по строке SQL Access
|
|||
---|---|---|---|
#18+
sdku, Да Вы не подсказали правильно решение. Но вот столкнулся теперь с проблемой - ну для меня по крайней мере. Предположим мне надо будет добавить клиента. Программа - открывается форма и пользователь заводит нового клиента. И как тогда быть? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2017, 22:41 |
|
Суммирование данных по строке SQL Access
|
|||
---|---|---|---|
#18+
maxseosdku, Да Вы мне подсказали правильно решение. Но вот столкнулся теперь с проблемой - ну для меня по крайней мере. Предположим мне надо будет добавить клиента. Программа - открывается форма и пользователь заводит нового клиента. И как тогда быть? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2017, 22:41 |
|
Суммирование данных по строке SQL Access
|
|||
---|---|---|---|
#18+
sdku, Получается мне надо сначала перебрать все вариант по модельно для этого клиента по базе - производитель, правильно? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2017, 22:43 |
|
Суммирование данных по строке SQL Access
|
|||
---|---|---|---|
#18+
maxseo, в перекрестном запросе столбцы добавятся автоматически будем говорить об этом примере 20752565 -для таблицы "производитель" я форму не делал(это уж сами). Прямо в таблицу добавьте запись:марка=1,производство="п4"-в полеСоСписком "произведено" для марки BMW-222 появится вновь добавленный производитель "п4" -занесите в форму новую запись для этой марки и производителя, запустите запрос "перекрестный"-в нем появился новый столбец с именем "п4" -по мере появления новых производителей(занесения их в таблицу "производитель") и создания записей, для этого производителя, через форму (в таблице) "поступило" столбцы в запросе добавятся автоматически -короче:добавляете производителя,создаете для него запись, в запросе появляется столбец с его именем Разбирайтесь,дорабатывайте под себя.Удачи ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2017, 01:34 |
|
Суммирование данных по строке SQL Access
|
|||
---|---|---|---|
#18+
если ничего не получится (уже задействованы клиенты) приложите БД (нужны данные-сам придумывать не буду), что наработали и четко изложите что хотите получить помогу,но только завтра или уже сегодня - в общем 30.08 днем ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2017, 01:44 |
|
Суммирование данных по строке SQL Access
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2017, 19:17 |
|
Суммирование данных по строке SQL Access
|
|||
---|---|---|---|
#18+
maxseo, Для таблиц марка и производитель я форм не делал (оставил это для Вас) Порядок заполнения таблиц(форм которые Вы создадите):марка>производитель (так называемые справочники)>поступило-если добавить новую марку или производителя для уже присутствующей в перечне марки,то эти значения появятся в соответствующих поляхСоСписком формы "поступило"-строки при добавлении марки и столбцы при добавлении производителя появятся автоматически. Пример:по этой БД 20752565 -добавьте запись в тбл."марки"-Лада -в тбл."производители"добавьте:поле марка-5(код записи в тбл.марка для Лада),производитель-п4 -занесите в форму поступило запись:марка-Лада,производитель-п4,количество-от1 до 32000, сохраните запись сочетанием клавиш,перейдя на любую другую или закрыв форму -запустите запрос перекрестный-добавилась строка Лада и столбец п4 Не изобретайте велосипед-все придумано до нас ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2017, 01:00 |
|
Суммирование данных по строке SQL Access
|
|||
---|---|---|---|
#18+
sdku, Добрый день! Спасибо за разъяснение, я точно так и делаю и все работает. Меня интересует вот что - авторзапустите запрос перекрестный-добавилась строка Лада и столбец п4, а как сделать автоматическое обновление запроса перекрестный? Так в с программой будут работать несколько пользователей и получаются, что они мне говорить мы добавили например клиента, товар, ... и мне надо перезапустить запрос перекрестный и тогда все появляется. Автоматически я понимаю это реализовать нет возможности ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2017, 12:33 |
|
|
start [/forum/topic.php?fid=45&fpage=67&tid=1612099]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 146ms |
0 / 0 |