|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.10.2016, 08:09 | #1 |
Регистрация: 13.08.2014
Сообщений: 7
|
Refresh одной записи DataSet
Возможно ли обновить конкретную запись набора данных?
При использовании связки 1. FDQuery (FireDac)->DataSource 2. FDQuery->TDataSetDriverEh->MemTableEh->DataSource Есть ли способ узнать актуальна ли запись? Опишу ситуацию: пользователь открывает датасет, после чего другой пользователь редактирует данные и сохраняет. После первый приступает к редактированию данных, видит при этом не актуальные данные. Хотелось бы проверять актуальность данных или рефрешить перед редактированием. Поскольку данных в таблице много каждый раз перезагружать датасет не вариант. Надеюсь понятно объяснил Заранее спасибо за идеи! |
07.10.2016, 08:36 | #2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
В качестве идеи - в событии BeforeEdit другим квериком дергать из базы нужную запись и сравнить значения предполагаемых для редактирования полей. А дальше или разрешение редактирования, или предупреждение и/или обновление всего датасета. Про локальное обновление одной записи не слышал
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
07.10.2016, 08:42 | #3 | |
Регистрация: 13.08.2014
Сообщений: 7
|
Цитата:
Как вариант рассматривал, но много данных сравнивать. Есть идея добавить триггер записывающий время последней правки записи. На клиенте в переменной хранить время последнего обновления датасета. Соответственно в BeforeEdit сравниваем переменную и момент последней правки. Возможно есть более красивые варианты |
|
07.10.2016, 08:49 | #4 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
А чего даст переменная с временем обновления датасета? Тогда уж сравнивать время обновления конкретной записи на клиенте. На счет много сравнивать - много это сотни и тысячи полей, десяток или пара десятков это мало
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
07.10.2016, 09:12 | #5 | |
Регистрация: 13.08.2014
Сообщений: 7
|
Цитата:
Если время переменной (последний рефреш датасета) < отметка о последней правке записи ТОГДА данная запись не актуальна и следует обновить датасет или выдать предупреждение. Полей от 5 до 50. Хотелось сделать универсальную функцию для проверки. Такая проверка требуется в нескольких местах Последний раз редактировалось Atletnah; 07.10.2016 в 09:15. |
|
07.10.2016, 09:33 | #6 | |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Цитата:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
07.10.2016, 09:59 | #7 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
И поля, кстати, руками перебирать не обязательно, в Dataset есть коллекция Fields[] - можно действовать через неё. |
|
07.10.2016, 10:13 | #8 | |
Регистрация: 13.08.2014
Сообщений: 7
|
Цитата:
Уверен был что есть простое и красивое решение, но понесло не в ту степь. Спасибо! |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Записи: Найти багаж, средний вес одной вещи в котором отличается не более, чем на 0,3 кг от общего среднего веса одной вещи | serg737 | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 03.05.2015 18:09 |
Перемещение ОДНОЙ записи из одной таблицы в другую | Vongud | БД в Delphi | 28 | 10.04.2015 21:47 |
Сравнение одной записи с несколькими | Negaty | SQL, базы данных | 6 | 22.11.2012 16:20 |
Строку из одного DataSet в другой DataSet | Abbath1349 | Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) | 0 | 22.05.2011 19:26 |
Update одной записи в таблице | EugeneIsmatulin | SQL, базы данных | 3 | 31.12.2009 19:39 |