Topic: Оповещение о добавленных записях

Добрый день, Дмитрий.

Есть проект с системой пользователей. Каждый видит только свои добавленные записи и администратор видит все записи и может добавлять записи другим.
Подскажите,как можно реализовать оповещение простым пользователям о новых добавленных записях?
К примеру," с вашего последнего входа добавлено столько то записей таким то пользователем".

Re: Оповещение о добавленных записях

Приветствую.



У записей должно быть поле с датой ее создания.
Также необходимо сохранять дату закрытия приложения, чтобы при старте программы сделать выборку новых данных.


Можете приложить свой проект с описанием, о каких именно данных пользователи должны получать уведомление, постараюсь реализовать данный функционал.

Dmitry.

Re: Оповещение о добавленных записях

Прикрепляю файл, который брал за основу проекта (Ваш пример с форума).
Администратор-admin (pass:admin) - видит все записи.
Простой пользователь-manager1 (pass: manager1) - видит только свои записи.
Администратор может добавлять и переназначать записи другим людям (в этом проекте поле User нельзя редактировать никому, забыл снять ограничение).
Когда простой пользователь входит под своим именем и если ему добавилась запись(и) с его последнего входа, выскакивает окошко:
За момента последнего сеанса добавлено (\количество\) записей от пользователя(пользователей): Администратор1, Администратор2 и тд.
Как то так..

Сразу пару вопросов:
1. Если входит администратор и ему добавил запись другой администатор, как тут быть?
2. Т.к администратор видит записи всех людей, не будет ли ему при входе выскакивать окошко с кучей добавленных записей (предназначенные обычным пользователям?)

Post's attachments

Attachment icon Login with visible own records and admin_my.zip 367.93 kb, 265 downloads since 2016-10-31 

Re: Оповещение о добавленных записях

memult wrote:

Когда простой пользователь входит под своим именем и если ему добавилась запись(и) с его последнего входа, выскакивает окошко:

Не ясен данный момент, что значит "ему добавилась запись"?

Dmitry.

Re: Оповещение о добавленных записях

Это связано с полем User, в информации о записи. (в таблице это Owner)
В режиме администратора, можно выбрать любого человека в этой вкладке (как я и сказал ранее в этом проекте поле User нельзя редактировать никому, т.к забыл снять ограничение - frmEmployee.cbUser.Enabled:=false,в режиме администратора оно True.
Т.е получается администратор добавляет запись, при этом может выбрать любого человека в этом поле,к примеру Manager1.
А когда заходит Manager1, ему высвечивается это окошко,описанное ранее - за время вашего послежднего входа было добавлено 1 записей администратором1.

Re: Оповещение о добавленных записях

memult wrote:

Это связано с полем User, в информации о записи. (в таблице это Owner)
В режиме администратора, можно выбрать любого человека в этой вкладке (как я и сказал ранее в этом проекте поле User нельзя редактировать никому, т.к забыл снять ограничение - frmEmployee.cbUser.Enabled:=false,в режиме администратора оно True.
Т.е получается администратор добавляет запись, при этом может выбрать любого человека в этом поле,к примеру Manager1.
А когда заходит Manager1, ему высвечивается это окошко,описанное ранее - за время вашего послежднего входа было добавлено 1 записей администратором1.

К сожалению не смогу реализовать это для вас, слишком объемное получается задание, чтобы его выполнить в рамках поддержки.

Dmitry.

7 (edited by memult 2016-11-02 16:40:11)

Re: Оповещение о добавленных записях

А с чем связан здесь большой объем?
Возможно Вы просто не совсем так поняли вопрос?
А нельзя ли просто сохранять дату закрытия программы для каждого пользователя и количество записей для него на этот момент. И при входе пользователя просто сравнивать сколько было записей на тот момент и сколько стало и показывать разницу.
Без указания кто и когда что добавил. Возможно вы сможете помочь с этим вопросом?
По идее это значительно легче реализовать, у меня к сожалению пока не хватает знаний это сделать нормально

Re: Оповещение о добавленных записях

memult
Как правило я могу помочь только с конкретными вопросами.
К сожалению чтобы описать все ньюансы, с чем это связано, также займет много времени.

Dmitry.

Re: Оповещение о добавленных записях

Подскажите хотя бы скрипт для сохранения даты закрытия программы?

Re: Оповещение о добавленных записях

memult wrote:

Подскажите хотя бы скрипт для сохранения даты закрытия программы?

В таблице БД "users" создайте например поле logout с типом ДАТА/ВРЕМЯ


т.о. дата выхода пользователя из системы будет сохранять в базе

procedure Form1_OnClose (Sender: string; Action: string);
begin
    SQLExecute('UPDATE users SET logout="' + FormatDateTime('yyyy-MM-DD hh:nn:ss.000', now) + '" WHERE id='+IntToStr(idUser));
end;
Dmitry.

Re: Оповещение о добавленных записях

Дмитрий, а не подскажите еще подобный скрипт для записи общего количества записей конктретного пользователя на момент выхода его из программы?
Время выхода сохраняется корректно,не могу понять как к нему привязать еще количество записей.

Re: Оповещение о добавленных записях

memult wrote:

Дмитрий, а не подскажите еще подобный скрипт для записи общего количества записей конктретного пользователя на момент выхода его из программы?
Время выхода сохраняется корректно,не могу понять как к нему привязать еще количество записей.

Необходимо, чтобы каждая запись имела поле с датой и временем ее создания. Тогда зная дату собственного выхода из системы, можно сделать SQL запрос и выбрать все записи, которые были созданы после даты/времени вышего выхода из системы.

Dmitry.

Re: Оповещение о добавленных записях

Подскажите, решился вопрос? Ме бы тоже было бы интересно всплывающее окно оповещения о добавленных записях.
Я это вижу так:
У каждого добавленного объекта есть дата добавления.
Так же регистрируется дата и время входа пользователей.
И на форме (которая всплывает после успешной аутентификации) в TableGrid1, выводятся все объекты занесенные после последнего посещения пользователя, а в Label подитог типа: С момента последнего входа внесено: (кол-во записей в TableGrid1)

Re: Оповещение о добавленных записях

Либо, что даже лучше и скорее всего проще, выделение записей (отображаемых в TableGrid) добавленных с момента последнего ВЫХОДА пользователя цветом. Реализуемо?

Re: Оповещение о добавленных записях

sidhillsaid
Реализуемо, вы описали алгоритм как это сделать, также я описал его выше.
Раскрашивать записи в TableGrid также возможно.

Dmitry.

Re: Оповещение о добавленных записях

Дмитрий, а нет конкретного примера раскрашивания записей созданых в отсутствии пользователя? Или куска скрипта?

Re: Оповещение о добавленных записях

sidhillsaid wrote:

Дмитрий, а нет конкретного примера раскрашивания записей созданых в отсутствии пользователя? Или куска скрипта?

К сожалению такого примера нет.

Dmitry.

Re: Оповещение о добавленных записях

Не поможете скриптом?
Логикой я понимаю его так:

Процедура для формы OnShow
В ней
if (дата выхода пользователя) > (даты последних добавленных записей)
then (строка записи = цвет).

Как объяснить это программе?))

Re: Оповещение о добавленных записях

sidhillsaid wrote:

Не поможете скриптом?
Логикой я понимаю его так:

Процедура для формы OnShow
В ней
if (дата выхода пользователя) > (даты последних добавленных записей)
then (строка записи = цвет).

Как объяснить это программе?))

Сделал для вас проект с примером, только новые записи выводятся в отдельный грид.

Post's attachments

Attachment icon Show last added records.zip 42.33 kb, 275 downloads since 2016-12-15 

Dmitry.

Re: Оповещение о добавленных записях

У меня в проекте записи добавляет только администратор, может быть возможно все таки сделать выделение цветом на основном гриде?

Re: Оповещение о добавленных записях

sidhillsaid wrote:

У меня в проекте записи добавляет только администратор, может быть возможно все таки сделать выделение цветом на основном гриде?

Доработал проект.

Post's attachments

Attachment icon Show last added records (highlight).zip 43.02 kb, 302 downloads since 2016-12-16 

Dmitry.

Re: Оповещение о добавленных записях

Отлично все работает! СПАСИБО!

Re: Оповещение о добавленных записях

Добрый день,спасибо за скрипт по расскраске записей. Немного не понял как вывести это добавленное количество записей в ShowMessage, какая переменная отвечает за счетчик записей?

Re: Оповещение о добавленных записях

memult wrote:

Добрый день,спасибо за скрипт по расскраске записей. Немного не понял как вывести это добавленное количество записей в ShowMessage, какая переменная отвечает за счетчик записей?

Приветствую.


Количество записей можно узнать в этой переменной slLastAddedID.Count

ShowMessage( IntToStr(slLastAddedID.Count) );
Dmitry.

Re: Оповещение о добавленных записях

Спасибо, а не подскажите где здесь проблема? Данное выражение не работает  MySQL:

SQLExecute('SELECT group_concat(id, Char(13)) FROM employees WHERE ' + 'datetime(created) > datetime("'+sDateLogout+'") AND datetime(created) < datetime("'+sDateLogin+'")');

Заменил group_concat на Concat_WS,как я понял нужно еще datetime заменить на другое выражение, не подскажите синтаксис для MySQL.

Также строчку

SQLExecute('UPDATE users SET logindate=datetime(''now'', ''localtime'') WHERE id='+IntToStr(idUser));

Заменил на:

SQLExecute('UPDATE users SET logindate="'+FormatDateTime('yyyy-MM-DD hh:nn:ss.000', now)+'" WHERE id='+IntToStr(idUser));

насколько это правильно?