Topic: Телефонная книга: Напоминание о дне рождения абонента
В таблице abonents есть поле birthday. Как для процедуры Form1_OnShow написать скрипт на открытие ShowMessage('Сегодня день рождения: ФИО' )?
My Visual Database → Russian → Телефонная книга: Напоминание о дне рождения абонента
В таблице abonents есть поле birthday. Как для процедуры Form1_OnShow написать скрипт на открытие ShowMessage('Сегодня день рождения: ФИО' )?
Попробуйте так
procedure Form1_OnShow (Sender: string; Action: string);
var
s: string;
begin
s := SQLExecute('SELECT group_concat(lastname || '' '' || firstname, char(13)) FROM person WHERE date(birthday)=date(''now'')');
if s <>'' then
begin
ShowMessage( 'Сегодня день рождения:' + #13 +s );
end;
end;
выведет список имен и фамилий.
Работает в том случае, если дата рождения равна сегодняшней. Но ведь сравнивать нужно только день и месяц, игнорируя год...
Точно, ошибся, попробуйте так
procedure Form1_OnShow (Sender: string; Action: string);
var
s: string;
begin
s := SQLExecute('SELECT group_concat(lastname || '' '' || firstname, char(13)) FROM person WHERE strftime('%d.%m', birthday)=strftime('%d.%m', ''now'')');
if s <>'' then
begin
ShowMessage( 'Сегодня день рождения:' + #13 +s );
end;
end;
Точно, ошибся, попробуйте так
Ругается на скобку
strftime('%d.%m'
Забыл экранировать кавычки, исправленный вариант
procedure Form1_OnShow (Sender: string; Action: string);
var
s: string;
begin
s := SQLExecute('SELECT group_concat(lastname || '' '' || firstname, char(13)) FROM person WHERE strftime(''%d.%m'', birthday)=strftime(''%d.%m'', ''now'')');
if s <>'' then
begin
ShowMessage( 'Сегодня день рождения:' + #13 +s );
end;
end;
Спасибо. Работает. Как раз только что до этого сам дошёл. Вот теперь появился смысл в наличии даты рождения.
В продолжение темы.
1. Как аналогично запросить список ЗАВТРАШНИХ именинников?
Меняю now на tomorrow, не работает.
t := SQLExecute('SELECT group_concat(person, char(13)) FROM abonents WHERE strftime(''%d.%m'', birthday)=strftime(''%d.%m'', ''tomorrow'')');
2. А можно ли в гриде поиском или запросом отобрать именинников по определённой дате независимо от года рождения?
kunar80
1.
t := SQLExecute('SELECT group_concat(person, char(13)) FROM abonents WHERE strftime(''%d.%m'', birthday)=strftime(''%d.%m'', ''now'', ''+1 day'')');
2.
SELECT person.name FROM abonents WHERE strftime('%d.%m', birthday)=strftime('%d.%m', {DateTimePicker})
My Visual Database → Russian → Телефонная книга: Напоминание о дне рождения абонента
Powered by PunBB, supported by Informer Technologies, Inc.
Theme Hydrogen by Kushi