Topic: Помогите создать таблицу "напоминаний"

Задумка...
Из существующей таблицы, просматривается (сравнивается) дата всех записей, и если выходит за рамки, формируется в другой таблице строки напоминания по просроченным записям.
Из оповещений, на главной форме анимация мигающей лампочки.
После входа в таблицу напоминаний и тыканья по интересующей строчке производится переход, а напоминание по просмотренному удаляется из списка, и создается новый предел срабатывания...

Вот....

2 (edited by vit007 2020-07-01 14:48:30)

Re: Помогите создать таблицу "напоминаний"

Вот тело,... не понимаю, как занести значения во вторую таблицу...

Post's attachments

Attachment icon Reminder.rar 294.5 kb, 268 downloads since 2020-07-01 

Re: Помогите создать таблицу "напоминаний"

можно при загрузке таблицы проверить записи счетчиком и раскрасить (выходящие за рамки дат)
после просмотра записи обновить  дату...

Re: Помогите создать таблицу "напоминаний"

Раскраска есть, но если база, по мере работы, заполнится так что будет не видно предыдущие записи и записи  с "хранением", то они будут проигнорированы, а так, например, начался рабочий день, включил таблицу, обработал все напоминания...

5 (edited by vit007 2020-07-02 12:46:42)

Re: Помогите создать таблицу "напоминаний"

Вот подсмотрел

SQLEXecute('INSERT INTO asd (data01,text01) SELECT (data00,text00) FROM qwe');

Разметил в цикле, но в чем-то синтаксическая ошибка...

И так сделать, чтоб индивидуально по строке срабатывало...

Re: Помогите создать таблицу "напоминаний"

Здравствуй Vit007,
Возможно, вложение представляет интерес, хотя и использует другой подход.
Существует 3 таблицы, каждая с фиксированным фильтром («текущие» задачи, «просроченные» задачи и «выполненные» задачи), и каждая запись автоматически перемещается из одной таблицы в другую в зависимости от ее состояния.
Там нет сценария, необходимого.
Derek.

Post's attachments

Attachment icon vitreminder.zip 337.19 kb, 301 downloads since 2020-07-02 

7 (edited by sibprogsistem 2020-07-02 20:40:16)

Re: Помогите создать таблицу "напоминаний"

проверяйте  значение в самой БД

procedure Form1_OnShow (Sender: TObject; Action: string);
var
i:integer;
list:TStringList;
begin
list:=TStringList.Create;
list.Text:=SQLExecute( 'SELECT group_concat(id, char(13) || char(10)) FROM file' );
for i:=0 to list.Count-1 do
    // если имеется разница более 2-х дней
    if (SQLexecute('SELECT julianday("now") - julianday(date)FROM file WHERE id='+list[i])>2) then ваше условие;
end;

Re: Помогите создать таблицу "напоминаний"

derek, да это интересно, но для движения задачи. А хотелось бы, после просмотра удалять запись без удаления из базы.

Re: Помогите создать таблицу "напоминаний"

sibprogsistem, а можете разъяснить, вот эту строчку...

SELECT group_concat(id, char(13) || char(10)) FROM file

10 (edited by sibprogsistem 2020-07-03 12:25:33)

Re: Помогите создать таблицу "напоминаний"

vit007 wrote:

sibprogsistem, а можете разъяснить, вот эту строчку...

SELECT group_concat(id, char(13) || char(10)) FROM file

берет id записи и добавляет их в список с новой строки каждый id

list.Count-1 - содержит количество этих строк...
 
смените file на Вашу таблицу

11 (edited by vit007 2020-07-03 15:40:16)

Re: Помогите создать таблицу "напоминаний"

sibprogsistem wrote:

смените file на Вашу таблицу

Таблицу, из которой берутся значения...? И значит надо id записать в таблицу asd.

12 (edited by vit007 2020-07-03 15:46:09)

Re: Помогите создать таблицу "напоминаний"

for k:=0 to list.Count-1 do if (SQLexecute('SELECT julianday("now") - julianday(data00)FROM qwe WHERE id='+list[k])>=0) then SQLEXecute('INSERT INTO asd (data01,text01) SELECT (data00,text00) FROM qwe');

Что-то, я делаю не так...

Re: Помогите создать таблицу "напоминаний"

vit007 wrote:
for k:=0 to list.Count-1 do if (SQLexecute('SELECT julianday("now") - julianday(data00)FROM qwe WHERE id='+list[k])>=0) then SQLEXecute('INSERT INTO asd (data01,text01) SELECT (data00,text00) FROM qwe');

Что-то, я делаю не так...


а вот это Вам зачем?
что Вы этим делаете?

 SQLEXecute('INSERT INTO asd (data01,text01) SELECT (data00,text00) FROM qwe');

Re: Помогите создать таблицу "напоминаний"

вот пример...

Post's attachments

Attachment icon test.7z 3.65 kb, 254 downloads since 2020-07-03 

15 (edited by vit007 2020-07-04 05:47:44)

Re: Помогите создать таблицу "напоминаний"

Условием, я б хотел, чтоб просроченные записи копировались в независимую таблицу (asd), где после просмотра, они удалялись без ущерба для основной базы.
Окраской в таблице, у меня занимается цикл

for Ii:=0 to Cc do form1.TableGrid1.Cell[Ii,i].Color := $adffaf;

Re: Помогите создать таблицу "напоминаний"

vit007 wrote:

Условием, я б хотел, чтоб просроченные записи копировались в независимую таблицу (asd), где после просмотра, они удалялись без ущерба для основной базы.
Окраской в таблице, у меня занимается цикл

for Ii:=0 to Cc do form1.TableGrid1.Cell[Ii,i].Color := $adffaf;

Копировались, то есть, что бы запись все таки осталась  в первой таблице? тогда можно обойтись просто полем ДА/НЕТ (просмотрено)..

Re: Помогите создать таблицу "напоминаний"

Да, чтоб оставалась, наверно, точнее делать дубликат... Задумка другая, когда появиться хоть одна запись в таблице дублирования, то на главной форме гифка за моргает,.Далее производится переход через кнопку в форму "напоминаний", а там тыкаем по записи, открывается форма просмотра, а после этого запись из таблицы напоминаний удаляется, и так с каждой записью "напоминания". Вот. Сейчас надо сделать дубликат записей по разности дат. Где условие понятно как сделать, а вот как выделить в таблице запись по условию и скопировать в другую непонятно...

Re: Помогите создать таблицу "напоминаний"

vit007 wrote:

Да, чтоб оставалась, наверно, точнее делать дубликат... Задумка другая, когда появиться хоть одна запись в таблице дублирования, то на главной форме гифка за моргает,.Далее производится переход через кнопку в форму "напоминаний", а там тыкаем по записи, открывается форма просмотра, а после этого запись из таблицы напоминаний удаляется, и так с каждой записью "напоминания". Вот. Сейчас надо сделать дубликат записей по разности дат. Где условие понятно как сделать, а вот как выделить в таблице запись по условию и скопировать в другую непонятно...

   
 
тогда так

procedure Form1_OnShow (Sender: TObject; Action: string);
var
i:integer;
name:string;
list:TStringList;
begin
 list:=TStringList.Create;
 list.Text:=SQLExecute( 'SELECT group_concat(id, char(13) || char(10)) FROM file' );
 for i:=0 to list.Count-1 do
   if (SQLexecute('SELECT julianday("now") - julianday(date)FROM file WHERE id='+list[i])>2) then
   name:=SQLexecute('SELECT name FROM file WHERE id='+list[i]);
       SQLExecute('INSERT INTO aaa(text)VALUES("'+name+'")');
end;

 
но от этого у вас появиться еще больше проблем...
лучше сделайте как в прикрепленном примере

Post's attachments

Attachment icon test.7z 441.42 kb, 257 downloads since 2020-07-04 

Re: Помогите создать таблицу "напоминаний"

Спасибо, мы не ищем легких путей... попробую,...

Re: Помогите создать таблицу "напоминаний"

Вот... Подскажите, как удалить все записи из указанной таблицы... нашел такой код, но не работает

SQLExecute('DROP DATABASE asd');

Re: Помогите создать таблицу "напоминаний"

sibprogsistem, Странно, принцип работы с обычным циклом похожи, но если просто цикл, то он записи 3 раза повторяет(заносит в таблицу). Тут, наверно, магическое TStringList...

Почему не работало

SQLEXecute('INSERT INTO asd (data01,text01) SELECT (data00,text00) FROM qwe');

потому что надо, наверно, было конвертировать поле с датой в текстовое...

Re: Помогите создать таблицу "напоминаний"

vit007 wrote:

Вот... Подскажите, как удалить все записи из указанной таблицы... нашел такой код, но не работает

SQLExecute('DROP DATABASE asd');

SQLExecute('DELETE FROM asd');

23 (edited by sibprogsistem 2020-07-06 11:08:18)

Re: Помогите создать таблицу "напоминаний"

vit007 wrote:

sibprogsistem, Странно, принцип работы с обычным циклом похожи, но если просто цикл, то он записи 3 раза повторяет(заносит в таблицу). Тут, наверно, магическое TStringList...

Почему не работало

SQLEXecute('INSERT INTO asd (data01,text01) SELECT (data00,text00) FROM qwe');

потому что надо, наверно, было конвертировать поле с датой в текстовое...

TStringList хранит конкретные строки и цикл for обрабатывает их все за исключением  BREAK - в этом случае цикл будет прерван ...

24 (edited by sibprogsistem 2020-07-06 11:12:59)

Re: Помогите создать таблицу "напоминаний"

SQLEXecute('INSERT INTO asd (поле_1,поле_2) VALUES (значение_1,значение_2) ');

Re: Помогите создать таблицу "напоминаний"

А как будет выглядеть условие на просмотр таблицы на наличие хотя бы одного любого id...