Лидеры рейтинга
Мастер-Эксперт
959
Мастер-Эксперт
541
Академик
354
Мастер-Эксперт
312
Профессионал
267
Профессор
73
Профессор
53
8.1.6
02.01.2021
JS: 2.2.2
CSS: 4.2.0
jQuery: 3.5.1
Создание программ на языках Pascal, Delphi и Lazarus.
Администратор раздела: Зенченко Константин Николаевич (Старший модератор)
|
Перейти к консультации №: |
|
Здравствуйте!
Скажите возможно ли использование этого кода в Дельфях? У меня при использовании group by вылетает ошибка. Данные выводятся в DBGrid. Может именно поэтому не получается? Реально ли вообще в DBGrid'е вывести по одному и с суммами? Или придётся перебирать все и выводить в какой-нибудь ListView?
Приложение:
Состояние: Консультация закрыта
Oтветов пока не поступило.
Мастер-Эксперт ID: 425
0
|
Maximus777 ===== |
неизвестный
0
|
= общий = | 07.10.2008, 20:58 Разобрался с кодом. Выводит, но малость не так как хотелось. Мне надо чтобы одинаковые наименования по количеству суммировались, и название выводилось только один раз. Например, был продан Анальгин 01.10.2008-1 и 05.10.2008-3, дык вот чтоб в гриде было |Анальгин | 4 |. Или это невозможно? ===== |
Мастер-Эксперт ID: 425
0
|
Возможно: ===== |
неизвестный
0
|
= общий = | 08.10.2008, 23:08 Спасибо. Вроде разобрался, работает. Пришлось в дельфях из ADOQuery убирать поля, тогда заработало. Теперь другой вопрос. Нигде не могу найти толкового примера с двумя JOIN. У меня названия берутся из Table1, а Приход и Расход соответственно с Table3 и Table2. Т.е. Table1 надо заJOINить с 2 и 3. С одним JOINом всё работало. Теперь надо два. Поправьте плиз код. Засада явно где-то во второй строке. ===== |
Мастер-Эксперт ID: 425
0
|
Обе таблицы (Приход, Расход) надо связывать со справочником, а не друг с другом: ===== |
неизвестный
0
|
= общий = | 09.10.2008, 19:46 делаю так: Код :: выделить код Close; SQL.Clear; SQL.Add('select Table1.Наименование, sum(Table3.Количество) as Приход, sum(Table2.Количество) as Расход'); SQL.Add('from Table1'); SQL.Add('inner join Table2 on Table1.key1=Table2.id'); SQL.Add('inner join Table3 on Table1.key1=Table3.id'); SQL.Add('where Дата between #'+FormatDateTime('mm''/''dd''/''yyyy',Date1.Date)+'# and #'+FormatDateTime('mm''/''dd''/''yyyy',Date2.Date)+'#'); SQL.Add('group by Table1.Наименование'); SQL.Add('order by Table1.Наименование'); Open; Говорит "Ошибка синтаксиса, пропущен оператор". ===== |
Мастер-Эксперт ID: 425
0
|
А почему у Вас внутри FormatDateTime(), в строке формата, стоят одинарные кавычки? ===== |
неизвестный
0
|
= общий = | 10.10.2008, 05:57 Могу сказать только одно, с двумя таблицами всё работает на ура, с этой же строкой про дату. Проблема возникает с JOINом, когда я третью таблицу пытаюсь привязать. ===== |
Мастер-Эксперт ID: 425
0
|
Конструкцию, подобно Вашей, я проверил на своей БД (только она MySQL, а не Access) - работает без проблем. ===== |
неизвестный
0
|
= общий = | 10.10.2008, 10:19 У меня с тремя таблицами вообще не получается. Работает только с двумя. Я наверное запутал вас. Попробую объяснить суть моей задачи. Есть три таблицы: ===== |
неизвестный
0
|
= общий = | 10.10.2008, 13:54 Всё! Вопрос решён. Метод научного тыка сделал своё дело. Вот оно: ===== |
Мастер-Эксперт ID: 425
0
|
Цитата: Table3.Дата Я ведь Вас про это спрашивал. И если бы Вы обращали внимание на мои уточняющие вопросы, то работоспособности запроса можно было бы добиться гораздо раньше. ===== |
неизвестный
0
|
= общий = | 11.10.2008, 08:58 А я думаю что наиболее критичное место всё-таки вторая строка. Третью строку я по всякому упрощал, но работоспособности запрос не приобретал. А вот после появления скобок и слова LEFT во второй строке всё заработало. Теперь бы ещё понять как весь процесс JOINа происходит ... ===== |
Мастер-Эксперт ID: 425
0
|
Слово LEFT означает, что при объединении таблиц из левой таблицы будут взяты все записи без исключения. INNER означает, что взяты будут тольке те записи, которые удовлетворяют условию объединения (которое после ON). Соответственно слово RIGHT будет обозначать, что берутся все без исключения записи в правой таблице. ===== |
неизвестный
0
|
= общий = | 11.10.2008, 18:15 Слово "И" то я знаю, с этим проблем нет, но если его использовать, то в грид вообще ничего не попадает. Потому что к примеру в периоде за 5-6 число Приход был 5-го, а Расход был 6-го. И если я делаю выборку за 5-е число, то в гриде пусто. Приход и Расход должны быть независимы друг от друга, а связаны только со справочником. Вобщем засада. ===== |
Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.