Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 06.08.2016
Сообщений: 4

Видимость изменений данных разными пользователями

06.08.2016, 18:00. Показов 936. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ситуация следующая. Два пользователя работают с одной базой. В базе есть таблица из 4 заданий. Оба пользователя запустили свое приложение Delphi и видят эти 4 задания. Теперь первый пользователь добавил еще одно задание. Как сделать так, чтобы второй пользователь сразу увидел эти изменения у себя?
Мой вариант решения:
Чтобы второму пользователю увидеть сделанные изменения, ему нужно переоткрыть таблицу (т.е. Close-Open). Значит я запускаю таймер, который через интервал времени переоткрывает таблицу для нахождения изменений.
Может быть есть лучшее решение?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.08.2016, 18:00
Ответы с готовыми решениями:

Редактирование dbgrid разными пользователями
Добрый день Есть dbgrid отображающую таблицу. База на acccess. Для добавления и редактирования есть dbedit'ы. для обновления есть кнопка...

Как установить две версии ZeosDBO, но под разными пользователями в D7?
На компе под одним пользователем установлен в Delphi7 компонент ZEOSDBO-6.6.1-beta, а под вторым пользователем мне б нужно поставить др....

Передача данных между БД с разными пользователями
Имеется две базы данных, доступ к обоим из под разных пользователей. Нужно 4 поля из таблицы первой базы данных скопировать в таблицу...

11
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
06.08.2016, 19:36
Можно и по таймеру.
А есть СУБД, в которых можно от сервера посылать событие в клиентскую программу.
При модификации данных все клиенты получают это событие и переоткрывают свой набор данных.
К примеру, такая возможность есть в Firebird.

Только в любом случае не забыть перед переоткрытием отключать прорисовку отображения данных, а после переоткытия установить указатель на ту строку, на которой он был установлен пользователем.
0
Хитрая блондиночка $)
 Аватар для Hikari
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
06.08.2016, 19:43
Цитата Сообщение от voytenko_i Посмотреть сообщение
Может быть есть лучшее решение?
UDP оповещения.
Пользователь регистрируется в таблице базы как активный, и изменяющий клиент всем активным пользователям рассылает сообщения о необходимости обновиться.
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,609
07.08.2016, 00:47
Цитата Сообщение от voytenko_i Посмотреть сообщение
Может быть есть лучшее решение?
Добавлю ещё вариант трехзвенки. Трёхуровневая архитектура
Он не зависит от СУБД и способен обеспечить достаточно срочное оповещение клиентов об изменении данных. Но тут требуется дополнительная работа.
0
 Аватар для krapotkin
6847 / 4674 / 1463
Регистрация: 14.04.2014
Сообщений: 20,659
Записей в блоге: 21
07.08.2016, 01:02
всегда масса вариантов и выбрать один конкретный можно только обладая ответами на довольно много вопросов
0
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,600
07.08.2016, 01:59
Цитата Сообщение от voytenko_i Посмотреть сообщение
ему нужно переоткрыть таблицу (т.е. Close-Open). Значит я запускаю таймер,
Допустим в таблице 100 000 запись или больше , из клиентское приложение я не вижу необходимость через "таймер" каждом секунде отправлять запрос на сервере. если это все равно увидит все пользователи при условие WHERE
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,609
07.08.2016, 02:20
Цитата Сообщение от xxbesoxx Посмотреть сообщение
я не вижу необходимость через "таймер" каждом секунде отправлять запрос на сервере. если это все равно увидит все пользователи при условие WHERE
И это тоже верно.
0
0 / 0 / 0
Регистрация: 06.08.2016
Сообщений: 4
11.08.2016, 14:11  [ТС]
Спасибо всем за ответы. У меня сейчас работа Delphi+ADO+Postgresql. Все работает нормально. На данный момент свою задачу решаю через таймер. Посылаю минимальный запрос - получаю последние данные. На других форумах - это самое частое решение.
При работе с Postgresql есть решение применить оповещения по командам NOTIFY/Listen. Но как получить это оповещение в программе?
Например:
В Delphi-программе я делаю запрос "Listen MyTask;" //теперь будем слушать оповещение MyTask от сервера
На сервере делаю команду "NOTIFY MyTask;" // возникло оповещение для всех слушающих
Где я в delphi-программе должен ловить это оповещение? Куда оно приходит? Где можно посмотреть код отлова этого оповещения?
0
 Аватар для krapotkin
6847 / 4674 / 1463
Регистрация: 14.04.2014
Сообщений: 20,659
Записей в блоге: 21
11.08.2016, 14:39
ну, как сказать. в двух словах - нигде
зачем вы связались с ADO ?
http://docwiki.embarcadero.com... s_(FireDAC)
0
0 / 0 / 0
Регистрация: 06.08.2016
Сообщений: 4
11.08.2016, 14:47  [ТС]
Мне нужен бесплатный компонент, чтобы не было вопросов по лицензиям или покупке чего-либо еще. Ваш вариант FireDac предполагает покупку лицензии? У меня есть еще вариант перейти на zeoslib - тоже бесплатно. Как там решается поставленный вопрос - тоже пока не знаю. Возможно, есть спец команда.
0
 Аватар для krapotkin
6847 / 4674 / 1463
Регистрация: 14.04.2014
Сообщений: 20,659
Записей в блоге: 21
11.08.2016, 15:03
наш вариант встроен в делфи
а делфи требует покупки лицензии
и не говорите, что ваша лицензия на Delphi 7 )))
0
0 / 0 / 0
Регистрация: 06.08.2016
Сообщений: 4
12.08.2016, 08:09  [ТС]
Спасибо за комментарии, мы отошли от темы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.08.2016, 08:09
Помогаю со студенческими работами здесь

Пополнение таблицы разными пользователями
Доброго дня! Есть задача заменить бумажный учёт входящих звонков, т.е. заменить сшитый альбом, который летает по офису туда сюда простой...

Доступ между Windows 7 в рабочей группе с разными пользователями
проблема возникла там, где ее быть не должно, задача - шары и расшаренные принтеры между 7-ками в раб группе, при наличии паролей у...

Delphi: Запрет запуска второй копии разными пользователями!
Данная тема здесь создавалась неоднократно, но варианты запрета, которые здесь приводились подходят только при попытке запуска одним...

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

Программа для работы в реальном времени с одним и тем же файлом (или файлами) разными пользователями
Доброго времени суток! Хочу попросить совета у знающих людей! Предупреждаю : новичок!!! Есть задумка : Создать программу, которая...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru