Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
Shiningemerald
 Аватар для Electroflower
384 / 117 / 22
Регистрация: 05.01.2012
Сообщений: 951
Builder 6

Таймер на форме, данные в базе: непонятная ситуация

11.07.2018, 09:25. Показов 1768. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем)

Чтобы помочь мне скорее всего не нужно ни знание программирования, ни знание СУБД, а нужна смекалка и логика.

Исходные данные:
1)---есть таймер на форме,
2)---по таймеру выполняется функция обновления некоторых данных на форме(данные тянутся из таблицы БД),
3)---ничего не предвещает беды и прекрасно работает.

Кликните здесь для просмотра всего текста
То есть таймер у нас обновляется раз минуту, например, и все хорошо.
Далее пользователю захотелось вдруг настраивать время обновления из БД, и я сделала поле в таблице откуда функция тянет значение и присваивает таймеру.
Все работало хорошо и пользователю все нравилось, поэтому он решил все поменять


Суть такова: данные, которые должны обновляться на форме тянутся из таблицы,в таблице этой есть дата/время обновления записи.
Пользователю надо чтобы моя форма обновлялась сразу после того как обновились данные в таблице в поле с датой/временем обновления.

Считаю это невозможным поскольку вижу единственным решением тут - ежесекундный запрос к таблице для проверки а-ля "не обновилось ли что там", а это не подходит, поскольку при таком ежесекундном обновлении пользователь просто не успевает работать с формой(она каждую секунду подвисает).

что делать?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.07.2018, 09:25
Ответы с готовыми решениями:

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

Непонятная ситуация
Здравствуйте, товарищи! Хочу рассказать свой случай, который как раз произошел буквально 3 недели назад... Итак, сайт существует с...

Непонятная ситуация...?
Всем доброго времени суток, уменя такая проблемка, по какой то причине при открытии формы в которую заносятся данные из БД, данные...

11
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
11.07.2018, 09:44
Цитата Сообщение от Electroflower Посмотреть сообщение
что делать?
Самое простое, что приходит в голову - отключать опрос обновления на время работы пользователя с формой. Можно еще запустить фоновый процесс, который будет отслеживать изменения и при необходимости обновлять выводимые на форму данные. Но тут я не силен.
0
Shiningemerald
 Аватар для Electroflower
384 / 117 / 22
Регистрация: 05.01.2012
Сообщений: 951
16.07.2018, 12:15  [ТС]
TrollHammer, в общем есть идея создать отдельный поток под эти нужды и, говорят, сие есть верное решение и явно лучше всех свистелок которые в голову лезут.
Читая про thread, понимаю что это первое, что должно было прийти мне в голову если я хороший программист..

Добавлено через 1 минуту
Но видимо это (
Цитата Сообщение от Electroflower Посмотреть сообщение
я хороший программист..
) не так вообще, да я это и понимаю..
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33414 / 21523 / 8237
Регистрация: 22.10.2011
Сообщений: 36,923
Записей в блоге: 12
16.07.2018, 12:40
Цитата Сообщение от Electroflower Посмотреть сообщение
Пользователю надо чтобы моя форма обновлялась сразу после того как обновились данные в таблице
А теперь - внимание, вопрос: как именно обновляются данные, изменение которых надо ловить?
1
Shiningemerald
 Аватар для Electroflower
384 / 117 / 22
Регистрация: 05.01.2012
Сообщений: 951
16.07.2018, 15:21  [ТС]
volvo, они пишутся в базу со стороннего сервиса навигации средствами этого же сервиса...

Добавлено через 2 часа 10 минут
volvo, если б вы натолкнули на мысли - была бы рада, буду сейчас пробовать написать с потоком.
Просто я по таймеру обновляла данные из базы, теперь они просят чтобы ориентировалась на время в таблицах, но чтобы постоянно проверять базу не будем же таймер использовать, они от этого отойти хотят. т.к. он каждую секунду обновляет.
Это не годится.
тем более тут в приложении вообще нет никаких потоков внутри, выходит только при запуске с процессом рождается один поток- в нем все и запрашиваем. Бог с ним, пусть для всего приложения будет один поток, но конкретно в этой форме нужно еще организовать, как я думаю.
Просто чтобы как-то правильно и красиво это сделать. Чтоб без анти-паттернов всяких

Добавлено через 4 минуты
Приложение еще до меня писали, если что...
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33414 / 21523 / 8237
Регистрация: 22.10.2011
Сообщений: 36,923
Записей в блоге: 12
16.07.2018, 15:52
Electroflower, и все-таки, озвучьте СУБД. В некоторых есть возможность подписаться на определенные события, скажем, в том же Firebird-е.
1
Shiningemerald
 Аватар для Electroflower
384 / 117 / 22
Регистрация: 05.01.2012
Сообщений: 951
16.07.2018, 16:09  [ТС]
volvo, СУБД Oracle
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33414 / 21523 / 8237
Регистрация: 22.10.2011
Сообщений: 36,923
Записей в блоге: 12
16.07.2018, 16:26
Лучший ответ Сообщение было отмечено Electroflower как решение

Решение

Оракла под рукой сейчас нет, но теоретически - не вижу причин не работать по схеме:

1) пишется триггер на изменение нужного поля, в нем вызывается DBMS_ALERT.Signal
2) в клиентском приложении на Дельфи/Билдере для отлова этого алерта используем TOraAlerter из ODAC (опять же, я не знаю, чем пользуетесь вы, ибо никакой информации не было предоставлено, поэтому я предлагаю свой вариант), и в момент, когда алерт пойман - просто делаем те обновления, которые нужны.

Таймер не нужен от слова "совсем".
2
Shiningemerald
 Аватар для Electroflower
384 / 117 / 22
Регистрация: 05.01.2012
Сообщений: 951
17.07.2018, 12:29  [ТС]
volvo, ODAC есть, вижу TOraAlerter...
Звучит очень хорошо, спасибо вам :3 буду пробовать..

Добавлено через 13 минут
volvo, еще хотела спросить в этой таблице обновляет данные некий SCHEDULER который нам недоступен, можем ли мы проверить таблицу на наличие апдейта ?

Добавлено через 10 минут
volvo, последний глупый вопрос пока отпадает, спасибо)

Добавлено через 19 часов 17 минут
volvo, В общем кинула на форму TOraAlerter, запускаю все но он не ловит из базы сигнал, возможно потому что стоит в положении Active->false. При установке true в ObjectInspector-е выдает ошибку ОРА 12154:TNS:Невозможно разрешить заданный идентификатор соединения.
Есть TOraSession он стоит Connected->false но в запуске коннектится, а вот TOraAlerter даже если руками ставить в true выпадает в ошибку.

Добавлено через 1 минуту
сигнал так посылаю:
Oracle 11 SQL
1
EXECUTE dbms_alert.signal('MyAlert', 'It Works!');
0
Shiningemerald
 Аватар для Electroflower
384 / 117 / 22
Регистрация: 05.01.2012
Сообщений: 951
20.07.2018, 15:26  [ТС]
UP!

еще актуально

из базы пишу :
Oracle 11 SQL
1
2
EXECUTE dbms_alert.signal('MyAlert', 'It Works!');
COMMIT;
В коде пишу:
C++
1
2
3
4
5
void __fastcall TFormDislGPS::OraAlerter1Event(TObject *Sender,
      AnsiString Event, AnsiString Message)
{
ShowMessage("Hello!");
}
Вот только OraAlerter1 у меня не ставится в положение Active->true в ObjectInspector
0
Shiningemerald
 Аватар для Electroflower
384 / 117 / 22
Регистрация: 05.01.2012
Сообщений: 951
23.07.2018, 11:34  [ТС]
Ребят, проблема остается, кто-нибудь может помочь?
Почитала описание dbms_alert. Понимаю, что если реализовывать механизмы внутри БД, то одна структура ждет сообщения(dbms_alert.waitone), а другая подает сообщение (dbms_alert.signal).
Если реализовывать как у меня в приложении на Builder 6- то моя база только подает сигнал(dbms_alert.signal), в то время как принимает сигнал уже TOraAlerter(dbms_alert.waitone).
0
Shiningemerald
 Аватар для Electroflower
384 / 117 / 22
Регистрация: 05.01.2012
Сообщений: 951
25.07.2018, 15:01  [ТС]
Проблему решила, если что - буду спрашивать еще!
Отдельное спасибо volvo!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.07.2018, 15:01
Помогаю со студенческими работами здесь

Непонятная ситуация
Добрый день. Помогите пожалуйста! Ситуация следующая: Есть база данных с таблицами: Клиенты, Заказы. Формами: Заказы, Отчеты, Заказчики....

Непонятная ситуация
Во общем создал форму под api и из меню новый (тоже создано средствами апи) выбераешь пункт меню новый и открывается новая форма. которая...

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

Непонятная ситуация с DNS
Здравствуйте. Появилась вчера такая проблема, некоторые программы начали писать, что прервано соединение с сервером. Далее в игре (Arma 2)...

Непонятная ситуация с KeyListener
Всем доброго дня, решил попробовать написать игру, управление персонажем происходит через KeyListener. Начал воссоздавать анимацию движения...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru