Обновление фреймов

  • Автор темы mtrx
  • Дата начала
M

mtrx

#1
Помогите плиз
Есть набор 3-х фреймов и менюшка, в каждом фрейме открываются вьюи из других баз с помощью менюшки.
Нужно сделать агент, который каждые 5 мин обновляет все фреймы на случай, если там инфа изменится.
Чувствую, что легко и просто, но не получается никак
 
Y

Yakov

#2
mtrx
Я не знаю, обновляются ли представления во всех фреймах при нажатии на клавишу F9. Если обновляются все фреймы, то есть одно очень простое решение. Суть. Пишем небольшую программу на Си, которая посылает окну клиента Notes сообщения об однократном нажатии клавиши F9. Вот текст этой программы:
Код:
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
HWND handle;
handle = FindWindow("NOTES", NULL);
if (handle != 0)
{
PostMessage(handle, WM_KEYDOWN, VK_F9, 1);
PostMessage(handle, WM_KEYUP, VK_F9, 0xC0000001);
}
return 0;
}
Затем настраивается Планировщик заданий Windows на запуск этой программы с нужной периодичностью. Всё.

Вот, кстати, и сама программка.
 

Вложения

M

mtrx

#3
мысль хорошая, но надо сделать с помощью агента, всем пользователям ставить программку нереально
 
Y

Yakov

#4
Насколько я знаю, если БД расположена на сервере, то агенты по расписанию работают на сервере. Чтобы агент работал по расписанию на клиенте, БД должна быть локальной.

всем пользователям ставить программку нереально
Lotus как-то всем поставили, вполне реально было...
 
M

mtrx

#5
Насколько я знаю, если БД расположена на сервере, то агенты по расписанию работают на сервере. Чтобы агент работал по расписанию на клиенте, БД должна быть локальной.
В БД собственных документов нет, она служит только в качестве оболочки, поэтому, впринципе, может быть и локальной

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

Omh

Lotus team
04.07.2007
2 210
1
#7
Как я понимаю, во фреймах отображаются view.
Теороетически могу предложить:
ws.ViewRefresh на PostOpen у view по таймеру :)
 
Y

Yakov

#8
Или еще один скрытый фрейм с формой, у которой на PostOpen @Command( [RefreshFrame]; targetFrame ) по таймеру.
 
M

mtrx

#9
@Command( [RefreshFrame]; targetFrame ) в агенте не работает, выдает:
Ошибка в формуле: Использование операторов @Command и других функций интерфейса не разрешено в поиске этого типа; укажите 'Нет' как конечную це■
На основе формулы изменено документов: 0
а если повесить на кнопку, то все ок... а как сделать, чтобы она по таймеру выполнялась?
или еще, как можно на Lotus Script обновить фрейм по имени, типа @Command( [RefreshFrame]; targetFrame ) ?
 
G

Guest

#11
Да все вроде нормуль, я конечно на глаз не вижу обновляется что или нет, но ошибки никакой нет. Делаете агент, там выбираете формула (на чем писать), туда запихиваете @Command( [RefreshFrame]; targetFrame ). В свойствах агента выбираете на что распространяются действия агента (target), в этом пункте ставити "None". Теперь лотус ниже пишет серым шрифтом, что как раз в таком агенте и надо писать @Command. После этого никаких ошибок не возникает. Проверить обновляется ли фрейм на самом деле - лень :wacko:
 
M
#12
В свойствах агента выбираете на что распространяются действия агента (target), в этом пункте ставити "None". Теперь лотус ниже пишет серым шрифтом, что как раз в таком агенте и надо писать @Command.
Может это косяк лотуса...
Если ставить триггер на "событие", то пункт "None" есть, и с ним, при выборе агента из меню, все работает, а если поставить триггер "по расписанию", то такого пункта нет.... только "Все новые и измененные документы" и "Все документы в базе данных"...
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#14
Это не косяк. @Command только для работы через UI. Шедульные агенты по определению такими быть не могут.
 
30.05.2006
1 345
11
#15
Есть такой NotesTimer-класс.
Прикручиваете его к UIView и оно автоматом рефрешится каждые N секунд
 
M
#16
А если из одного агента по расписания запускать уже тот самый наш агент?
Пробовал, тоже не работает..
Есть такой NotesTimer-класс.
Прикручиваете его к UIView и оно автоматом рефрешится каждые N секунд
А можно поподробней? Мне так и не удалось найти аналог @Command( [RefreshFrame]; targetFrame ) для LotusScript