1 (edited by newusr 2024-04-17 09:25:52)

Topic: Фильтр для TGrid

Добрый день.
Делаю БД кафешки, пока только набросок. Помогите с отображением данных в TGrid:
https://myvisualdatabase.com/forum/misc.php?action=pun_attachment&item=10406
При открытии формы Fzakaz, скриптом вставляю в таблицу zakaz новую пустую запись и сохраняю id, в левой TGrid меню выводятся все данные из таблицы bludo, при нажатии кнопки "Добавить в заказ" открывается новая форма с заполненными полями из таблицы bludo (название, цена) и zakaz (id), по нажатию в этой форме кнопки "сохранить" все данные сохраняются в таблицу sostav_z и форма закрывается, при этом в TGrid заказ отображается все данные из таблицы sostav_z, а должны только записи текущего заказа (zakaz.id=lastid).
Пытался сделать фильтр в настройках таблицы и скриптом:

procedure Fzakaz_TableGrid2_OnChange (Sender: TObject);
begin
   Fzakaz.TableGrid2.dbFilter:='id='+lastid;
end;

при выполнении запроса появляется ошибка:

Сообщение об ошибке: 
#23000Column 'id' in where clause is ambiguous
Action (Search): 
Fzakaz

Запрос вызывающий ошибку:

SELECT DISTINCT `sostav_z`.`id_zakaz` as "sostav_z.id_zakaz",`bludo`.`Название` as "bludo.Название",`sostav_z`.`Количество` as "sostav_z.Количество",`sostav_z`.`Сумма` as "sostav_z.Сумма",`sostav_z`.id,`sostav_z`.`id_bludo` as "sostav_z.id_bludo" FROM `sostav_z` LEFT OUTER JOIN `bludo` ON `sostav_z`.`id_bludo`=`bludo`.id WHERE (id=22)

Как сделать, чтобы в TGrid заказ отображались записи только текущего заказа? Может у меня вообще в корне не верный алгоритм?
PS: БД - MySQL.

Post's attachments

Attachment icon кафешка.JPG 98.88 kb, 4 downloads since 2024-04-17 

Re: Фильтр для TGrid

что значит sostav_2 ?
для чего эта таблица??

Re: Фильтр для TGrid

pavlenko.vladimir.v wrote:

что значит sostav_2 ?
для чего эта таблица??

Нет таблицы sostav_2, есть sostav_z.
В таблице bludo список всех блюд и цены, в таблице zakaz сумма всего заказа (потом будут ещё поля), в таблице sostav_z соответсвенно состав заказа, т.е. список блюд (id) привязанных к закау (id).

Re: Фильтр для TGrid

Хотя синтаксис SQL допускает написание ...


https://k245.ru/mvdb/ispolzovanie-sql-v-mvdb.html

Re: Фильтр для TGrid

The ambiguous "id" error comes from your script where the id is not defined (which table.id?)

Re: Фильтр для TGrid

newusr wrote:

Как сделать, чтобы в TGrid заказ отображались записи только текущего заказа? Может у меня вообще в корне не верный алгоритм?
PS: БД - MySQL.

Понял, в чём была моя ошибка. Таблица zakaz никак не привязана к форме была, добавил в таблицу zakaz поле с номером заказа и разместил на форме, теперь в TGrid заказ отображаются только данные текущего заказа.