Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / как сделать динамически обновлямый запрос / 11 сообщений из 11, страница 1 из 1
19.08.2004, 00:14
    #32655787
Юзя
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как сделать динамически обновлямый запрос
Приветствую всех! Необходимо в программе на ( АСА 8 + Power Builder 9) сделать запрос, который будет автоматически обновляться, по таймеру.
Может существует встренное средство в АСА? Как в Интербейзе например, свойство timesql (не помню точно), в котором указываешь время в секундах синхронизации информации в БД с информацией на клиенте.

Добавили в базу пачку записей а тебе кнопку RETRIEVE надо жать, просветите неуча пожалуйста.
Зарание благодарен.
...
Рейтинг: 0 / 0
19.08.2004, 01:07
    #32655794
c127
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как сделать динамически обновлямый запрос
Считывание данных проблема не сервера, а клиента, поэтому нужно искать ответ в PB. Например можно создать таймер в окне и там перечитывать данные или флаг обновления.

Если непременно нужно решать задачу на стороне сервера, то можно отправлять сообщение на клиент из триггера либо завести событие по расписанию (см. "scheduled events") и из него отправлять сообщение на клиент. Я знаю как это сделать руками через TCP/UDP и соответсвующий слушатель на стороне PB (все через внешние функции и DLL), но скорее всего есть более простое решение.

В интербейзе наверняка так и делается, поскольку клиент может услышать сообщение с сервера только когда он слушает. Т.е. должен быть специальный клиент, а не клиент вообще, иначе сообщение улетит в пустоту.
...
Рейтинг: 0 / 0
19.08.2004, 11:40
    #32656325
Leonid_B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как сделать динамически обновлямый запрос
В PB в нужной форме создаете кнопку или как вам удобней. Настраиваете таймер:

time(600) //время в секундах

Далее в вашей форме пишите скрипт на событие TIMER.
...
Рейтинг: 0 / 0
20.08.2004, 13:31
    #32658907
Kr_Yury
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как сделать динамически обновлямый запрос
См. также Timer_Interval DataWindow object property
...
Рейтинг: 0 / 0
20.08.2004, 13:52
    #32658969
Kr_Yury
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как сделать динамически обновлямый запрос
Честно говоря, я сам не понял как используется Timer_Interval, может кто растолкует?
...
Рейтинг: 0 / 0
21.08.2004, 14:39
    #32660079
__vlad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как сделать динамически обновлямый запрос
Простейший пример использования DW Time Interval

http://www.rgagnon.com/pbdetails/pb-0217.html
...
Рейтинг: 0 / 0
27.08.2004, 01:02
    #32667972
Юзя
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как сделать динамически обновлямый запрос
Все это конечно хорошо, я на счет свойства Time Interval, но оно никак в данном вопросе не спасает. Ведь метод Retrieve вызывается для DW controla, и внутри DW object его ну никак программно не вызовешь. Или я ошибаюсь??? Может есть возможность?
...
Рейтинг: 0 / 0
27.08.2004, 01:46
    #32667980
rcryo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как сделать динамически обновлямый запрос
Не помню где я это откопал, но делается так.
В DW контроле , у меня это в u_dw:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Function Boolean KillTimer (ulong hWnd, uint uIDEvent) Library "USER32.DLL"
Function uint SetTimer (ulong hWnd, uint nIDEvent, uint uElapse, ulong lpTimerFunc) Library "USER32.DLL" 

public function integer of_settimer (decimal ad_interval);
IF ad_interval >  0  THEN
	SetTimer(handle(this),  1 , long(ad_interval *  1000 ),  0 )
ELSE
	KillTimer(handle(this),  1  )
END IF
Return  0 
end function
и добавляешь событие timer которое привязываешь к событию pbm_timer, в нем делаешь Retrieve()
функцией of_settimer(интервал в секундах) задаешь интервал обновления DW

Успехов!
...
Рейтинг: 0 / 0
27.08.2004, 07:25
    #32668063
Ermak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как сделать динамически обновлямый запрос
А чем не нравится Event timer() в окне?

PS. Ох и не просто же реализовть корректный динимически обновляемый запрос. Неужели это настолько необходимо?
...
Рейтинг: 0 / 0
27.08.2004, 11:34
    #32668468
rcryo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как сделать динамически обновлямый запрос
ErmakА чем не нравится Event timer() в окне?
А если у меня одно окно на все отображаемые данные в приложении: формы, списки, отчеты и пр. Не для спора, просто у каждого свои решения.
...
Рейтинг: 0 / 0
27.08.2004, 11:57
    #32668527
Ermak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как сделать динамически обновлямый запрос
авторА если у меня одно окно на все отображаемые данные в приложении: формы, списки, отчеты и пр. Не для спора, просто у каждого свои решения.
Не для спора, но для размышления. За то время, что Вы ищите своё решение, проблему, на мой взгляд, уже можно было решить.

Есть ещё timing object. Наследуйте его. В Instance var'ах определите переменную с типом dataWindow или с типом наследника от DataWindow (у меня будет uov_dw), определите ф-цию, что-то вроде of_setdw( a_dw ) для инициализации этой переменной. Далее используйте событие timer() для обновления данных в своем dataWindow.
Если динамически обновлять данные необходимо более чем в 1-м Dw, то оформите это решение в виде "сервиса" для своего объекта dw.
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / как сделать динамически обновлямый запрос / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]