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

  • Автор темы 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

Well-Known Member
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 ) ?
 
M

mtrx

Гость
#10
что то похожее
Sub Initialize
Dim session As New NotesSession

Dim workspace As New NotesUIWorkspace
'Call workspace.OpenframeSet("Main")
Call workspace.ReloadWindow

End Sub
но этот код переоткрывает базу, а не обновляет
 

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

mtrx

Гость
#12
В свойствах агента выбираете на что распространяются действия агента (target), в этом пункте ставити "None". Теперь лотус ниже пишет серым шрифтом, что как раз в таком агенте и надо писать @Command.
Может это косяк лотуса...
Если ставить триггер на "событие", то пункт "None" есть, и с ним, при выборе агента из меню, все работает, а если поставить триггер "по расписанию", то такого пункта нет.... только "Все новые и измененные документы" и "Все документы в базе данных"...
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
#14
Это не косяк. @Command только для работы через UI. Шедульные агенты по определению такими быть не могут.
 

Constantin A Chervonenko

Well-Known Member
Lotus team
30.05.2006
1 333
4
#15
Есть такой NotesTimer-класс.
Прикручиваете его к UIView и оно автоматом рефрешится каждые N секунд
 
M

mtrx

Гость
#16
А если из одного агента по расписания запускать уже тот самый наш агент?
Пробовал, тоже не работает..
Есть такой NotesTimer-класс.
Прикручиваете его к UIView и оно автоматом рефрешится каждые N секунд
А можно поподробней? Мне так и не удалось найти аналог @Command( [RefreshFrame]; targetFrame ) для LotusScript