Topic: Подвал таблицы SQL запроса

Добрый вечер!
Помогите решить проблему. Таблица заполняется по SQL запросу и мне нужно чтобы так же сформировать подвал с итогом суммы по столбцу. Вывод подвала с применением информации из справочника не помог.
Вот запрос на заполнение таблицы:
frmZakupka.TableGrid2.dbSQL := 'SELECT ZakEnt.id, "$autoinc", Docum.docum, Entrance.nomber, strftime (''%d.%m.%Y'', Entrance.data), Entrance.sum, Purveyor.name, Score.nomscore, strftime (''%d.%m.%Y'',Score.datdscore), ZakEnt.note FROM Entrance LEFT JOIN Score ON Score.id=Entrance.id_Score LEFT JOIN Purveyor ON Purveyor.id=Score.id_Purveyor LEFT JOIN Docum ON Docum.id=Entrance.id_Docum LEFT JOIN ZakEnt ON ZakEnt.id_Entrance=Entrance.id WHERE ZakEnt.id_Zakupka=' +frmZakupka.Edit4.sqlValue+ ' GROUP BY Entrance.nomber';
   frmZakupka.TableGrid2.dbListFieldsNames := 'delete_col, № п/п, Документ, № документа, дата, Сумма, Контрагент, № счета, дата, Комментарий';
   frmZakupka.TableGrid2.dbSQLExecute;

Re: Подвал таблицы SQL запроса

Приложите, пожалуйста, ваш проект, чтобы было ясна структура данных.


Можете попробовать заносить данные в подвал скриптом в обработчике таблицы onChange:

procedure Form1_TableGrid1_OnChange (Sender: TObject);
var
  tmpSum: Variant;
  s: string;
begin
  tmpSum := SQLExecute('SELECT SUM( Entrance.sum ) FROM Entrance LEFT JOIN ZakEnt ON ZakEnt.id_Entrance=Entrance.id WHERE ZakEnt.id_Zakupka=' +frmZakupka.Edit4.sqlValue  );
  if ValidFloat(tmpSum) then
    s := FormatFloat('0.00',tmpSum)
  else
    s := '0,00';
  frmZakupka.TableGrid2.Columns[5].Footer.Caption := s;
end;
Визуальное программирование: блог и телеграм-канал.

Re: Подвал таблицы SQL запроса

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

Re: Подвал таблицы SQL запроса

Не вижу вложения. Нужно сделать архив проекта, но без exe-файла.

Визуальное программирование: блог и телеграм-канал.

Re: Подвал таблицы SQL запроса

Извините, щас точно прицепил

Post's attachments

Attachment icon база данных.7z 1.43 mb, 99 downloads since 2025-12-06 

6 (edited by k245 2025-12-06 14:29:10)

Re: Подвал таблицы SQL запроса

Вы всё правильно сделали, но нужно включить отображение футера в настройках таблицы:  раздел Options, goFooter = True

И в этой строке я немного ошибся - колонка #4

frmZakupka.TableGrid2.Columns[4].Footer.Caption := s;
Визуальное программирование: блог и телеграм-канал.

Re: Подвал таблицы SQL запроса

Спасибо! Все получилось, но остался еще один вопрос: почему когда я начинаю правку поступления, то у меня в оне открывается некорректное поступление (не то что я вызываю), а какое-то иное и логику я не понимаю
Фото прилагаю

Post's attachments

Attachment icon 2025-12-07_18-19-58.jpg 409.64 kb, 52 downloads since 2025-12-07 

Re: Подвал таблицы SQL запроса

Уточните, какие поля таблицы ZakEnt вы хотите редактировать с помощью этой формы? note и id_entrance ? Для редактирования id_entrance   вы используете таблицу. Это допустимо, но у вас там фильтрация идет по полю с ручным вводом и по комбику. Поэтому возможна такая ситуация, когда записанное значение скрыто фильтром. Я не нашел какой-либо явной синхронизации фильтра с содержимым ZakEnt , хотя какие-то разные значения оказываются в поле фильтра из-за того, что в нем указаны имена других таблиц и полей. Я не рекомендую использовать неявную логику, которая к тому же не документирована. На форме редактирования должны быть компоненты, источником данных которых должна быть редактируемая таблица. Для инициализации всех остальных компонент должен быть скрипт, запускаемы на событии открытия формы. В этом событии есть возможность определять, в каком режиме открылась форма - для добавления или редактирования. Это понадобится для настройки вашего фильтра. Точнее ничего сказать не могу, так как до конца не ясна требуемая логика работы данной формы.

Визуальное программирование: блог и телеграм-канал.

Re: Подвал таблицы SQL запроса

Добрый вечер!
Таблица ZakEnt, была создана как сводная. В данной таблице я редактирую данные таблицы Entrance. Я не могу вывести все данные в данную таблицу без запроса, поскольку для отображения всех требуемых данных, программно не возможно из-за необходимости показа данных ниже второго уровня. Я могу предположить, что не корректно создал схему связей, гл тут мне порой не совсем ясно как обеспечить заполнение таблиц при иной схеме.