1 (edited by senseyesenseye1983 2022-08-07 13:18:39)

Topic: Календарь с привязкой

Доброго дня всем. Подскажите мне как сделать так чтоб в календаре числа показывали даты которые привязаны в таблице к другой таблице. Имеется таблица tabledate с датами и в ней  две колонки 1- date; 2-id_product. Цель: отображение в календаре только тех дат! которые привязаны к id_product. Имеется вот такой скрипт, но он выбирает все даты в таблице sad

s := SQLExecute('SELECT IFNULL(GROUP_CONCAT(DISTINCT DATE_FORMAT(`date`, "%e") ORDER BY `date` ASC), "") FROM tabledate WHERE MONTH(`date`) = '+sMonth+' AND YEAR(`date`)='+IntToStr(Year));

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

Re: Календарь с привязкой

В запросе к базе не уточняется id_product. Добавь его в условия и должен получить то, что ищешь

3 (edited by senseyesenseye1983 2022-08-10 01:28:47)

Re: Календарь с привязкой

indigen wrote:

В запросе к базе не уточняется id_product. Добавь его в условия и должен получить то, что ищешь

Ну я так и знал что id нужен но как правильно его вклеить в скрипт ?
s := SQLExecute('SELECT IFNULL(GROUP_CONCAT(DISTINCT DATE_FORMAT(`date`) ORDER BY `date` ASC), "") FROM bsm_date WHERE MONTH(`date`) = '+sMonth+' AND YEAR(`date`)='+IntToStr(Year) + 'tabledate.id_product=tabledate.id_date');
? помогите кто нибудь

Re: Календарь с привязкой

Вечер всем. Дела такие: как бы я не пытался привязать календарик не выходит у меня ничего, даже не знаю где моя ошибка вроде все правильно делаю... При нажатии на продукт - в другой таблице отображаются те даты которые привязаны к конкретному продукту но в календаре идет подсветка ВСЕХ! дат почему то ?? Кто нибудь поможет разобраться?

Post's attachments

Attachment icon Dates.jpg 143.21 kb, 48 downloads since 2022-08-14 

Re: Календарь с привязкой

Как писал выше indigen, просто добавь воды smile
точнее, добавь условие выборки по id_product

sIDProduct := <Form>.<TableGrid>.dbItemID;
s := SQLExecute('SELECT IFNULL(GROUP_CONCAT(DISTINCT DATE_FORMAT(`date`, "%e") ORDER BY `date` ASC), "") FROM tabledate WHERE MONTH(`date`) = '+sMonth+' AND YEAR(`date`)='+IntToStr(Year)+' AND id_product = '+sIDProduct );
Визуальное программирование: блог и телеграм-канал.

6 (edited by senseyesenseye1983 2022-08-15 01:58:31)

Re: Календарь с привязкой

k245 wrote:

Как писал выше indigen, просто добавь воды smile
точнее, добавь условие выборки по id_product

sIDProduct := <Form>.<TableGrid>.dbItemID;
s := SQLExecute('SELECT IFNULL(GROUP_CONCAT(DISTINCT DATE_FORMAT(`date`, "%e") ORDER BY `date` ASC), "") FROM tabledate WHERE MONTH(`date`) = '+sMonth+' AND YEAR(`date`)='+IntToStr(Year)+' AND id_product = '+sIDProduct );

procedureFormProduct_MonthCalendar_OnGetMonthBoldInfo (Sender: TObject; Month, Year: Cardinal; var MonthBoldInfo: Cardinal);
var
    AStr: array of string;
    AByte: Array of byte;
    sMonth,sIDProduct, s: string;
    i, c: integer;
begin
    sMonth := IntToStr(Month);
    sIDProduct := <FormProduct>.<TableGrid>.dbItemID;
s := SQLExecute('SELECT IFNULL(GROUP_CONCAT(DISTINCT DATE_FORMAT(`date`, "%e") ORDER BY `date` ASC), "") FROM tabledate WHERE MONTH(`date`) = '+sMonth+' AND YEAR(`date`)='+IntToStr(Year)+' AND id_product = '+sIDProduct ):



На вот этом моменте      sIDProduct := <FormProduct>.<TableGrid>.dbItemID;    выдает ошибку компиляции...

Re: Календарь с привязкой

Уважаемый senseyesenseye1983


Угловыми скобками обозначают метаопределения, то есть не настоящие названия, а смысловые. Вы должны сами заменить


<Form> - на название формы, например на frmMain
<TableGrid> - на название табличного представления, например на tgrData


В вашем случае с большой вероятностью (приходится догадываться, так как вы не уточнили это в своих постах) нужно писать так:

sIDProduct := FormProduct.TableGrid.dbItemID;
Визуальное программирование: блог и телеграм-канал.

Re: Календарь с привязкой

мне стыдно