агент обновления документов

wowa

Well-known member
01.02.2007
845
0
#1
Подскажите, я полный ноль в агентах.... Это мой первый агент
Мне нужно залезть во view, достать доки и обновить их
veiw содержит
|Уникальное название|Заглавие БД|Сервер|Имя БД|


Начал писать агент
Dim db As NotesDatabase
Dim vw As NotesView
Dim vwnav As NotesViewNavigator
Dim vwentryA As NotesViewEntry

Set vw = db.GetView ("vw-InformationDB" )
Set vwnav = vw.CreateViewNav()
Set vwentryA = vwnav.GetFirst

' берем один из доков
While Not(vwentryA Is Nothing)

' Открываем БД
Dim db1 As New NotesDatabase( "", "" )
stDBServer = vwentryA.ColumnValues(2)
stDBFileName = vwentryA.ColumnValues(3)
Call db1.Open(stDBServer,stDBFileName )

' Получаем список форм открытой БД
Forall form In db.Forms
stMsgString = stMsgString & Chr(10) & form.Name
End Forall

Set vwentryA = vwnav.GetNext(vwentryA)
Wend
Вообщем документ содержит еще поле со списком форм определенной БД(которую мы открыли). Мне нужно обновить документ, так как список форм мог измениться. Я получил новый список форм. НО как можно изменить документ(с обновленным полем, содержащим список форм) - не знаю
НО как я понимаю тут надо работать с doc, но я что-то не знаю....
 

wowa

Well-known member
01.02.2007
845
0
#3
Для: Medevic
я думаю не подойдет.
Я считаю что нужно написать почти тот же код, что и на кнопочке документа. Только как обновить и сохранить док - не знаю
 

wowa

Well-known member
01.02.2007
845
0
#5
Есть документ с двумя полями поле№1 и поле№2 , причем второе берет значение из первого через use formula for choices (поле№1)
Документ сохранен, вообщем все нормально,все заполнено

Далее вызываю агент
.....................
Call doc.ReplaceItemValue("поле№1",stMsgString)
Call doc.Save(True,True )

Т.е. обновилось поле№1
НО поле№2 не обновилось и оно пусто
Помогите, что можно сделать... Можно ли как-н обновить документ, или еще что-н?
 
O

Ogion7

#6
Документ обновить надо, или галку поставь Refresh fields on keyword change
 

wowa

Well-known member
01.02.2007
845
0
#7
<!--QuoteBegin-Ogion7+12:04:2007, 16:06 -->
<span class="vbquote">(Ogion7 @ 12:04:2007, 16:06 )</span><!--QuoteEBegin-->Можно ли как-н обновить документ
[snapback]62276" rel="nofollow" target="_blank[/snapback]​
[/quote]
Для: Ogion7
вот я и не знаю как обновить
 

Kee_Keekkenen

Well-known member
05.09.2006
639
4
#8
Call doc.ReplaceItemValue("поле№1",stMsgString)
Call doc.ComputeWithForm(True, False)
Call doc.Save(True,True )
 

wowa

Well-known member
01.02.2007
845
0
#9
Для: Kee_Keekkenen
Все равно не заполняется то поле....((
Вот мой код на всякий случай
Dim s As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim vw As NotesView
Dim vwnav As NotesViewNavigator
Dim vwentryA As NotesViewEntry
Dim stDBServer As String
Dim stDBFileName As String
Dim stMsgString As String

Set db = s.CurrentDatabase
Set vw = db.GetView ("vw-InformationDB" )
Set vwnav = vw.CreateViewNav()
Set vwentryA = vwnav.GetFirst

While Not(vwentryA Is Nothing)
Set doc = vwentryA.Document
' Открываем БД
Dim db1 As New NotesDatabase( "", "" )
stDBServer = doc.GetItemValue("GXE_InfD_d_DBServer_TX")(0)
stDBFileName = doc.GetItemValue("GXE_InfD_d_DBFileName_TX")(0)
If stDBServer = "Local" Then stDBServer=""
Call db1.Open(stDBServer,stDBFileName )
' Получаем список форм открытой БД
Forall form In db1.Forms
stMsgString = stMsgString & Chr(10) & form.Name
End Forall

Call doc.ReplaceItemValue("GXE_InfD_d_CandidListFormDB_TX",stMsgString)

Call doc.ComputeWithForm(True, False)
Call doc.Save(True,True )
Call vw.Refresh()

Set vwentryA = vwnav.GetNext(vwentryA)

Wend
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#10
<!--QuoteBegin-wowa+13:04:2007, 07:23 -->
<span class="vbquote">(wowa @ 13:04:2007, 07:23 )</span><!--QuoteEBegin-->Все равно не заполняется то поле....((
[snapback]62316" rel="nofollow" target="_blank[/snapback]​
[/quote]
Не понятно, как оно должно заполнится.

Ты пишешь:
<!--QuoteBegin-wowa+12:04:2007, 14:50 -->
<span class="vbquote">(wowa @ 12:04:2007, 14:50 )</span><!--QuoteEBegin-->Есть документ с двумя полями поле№1 и поле№2 , причем второе берет значение из первого через use formula for choices (поле№1)
[snapback]62257" rel="nofollow" target="_blank[/snapback]​
[/quote]
Второе никак не может брать значение из первого через use formula for choices. Так ты только создаешь список возможных значений. Но значение поля должен проставить ты сам.
 

wowa

Well-known member
01.02.2007
845
0
#11
Начну все заново...В документе Мне нужно было занести в Listbox(поле№2) значения... Чтобы их туда занести , мне порекомендовали создать отдельное, скрытое Text поле(поле№1), и занести сначала туда значения,..
И прописать в поле№2, на второй закладки через use formula for choices (поле№1).....
http://codeby.net/forum/threads/12348.html?hl=listbox
При работе агента скрытое, TEXT поле№1 обновляется, но ListBox (поле№2) - пусто
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#12
<!--QuoteBegin-wowa+13:04:2007, 10:11 -->
<span class="vbquote">(wowa @ 13:04:2007, 10:11 )</span><!--QuoteEBegin-->При работе агента скрытое, TEXT поле№1 обновляется, но ListBox (поле№2) - пусто
[snapback]62324" rel="nofollow" target="_blank[/snapback]​
[/quote]
Пустое это как? Нет значения или нет списка вариантов?
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#14
Понятно, где ошибка.
Вот так, как ниже списки не делают.
<!--QuoteBegin-wowa+13:04:2007, 07:23 -->
<span class="vbquote">(wowa @ 13:04:2007, 07:23 )</span><!--QuoteEBegin-->Forall form In db1.Forms
stMsgString = stMsgString & Chr(10) & form.Name
End Forall[/quote]
У тебя как бы получается, что первое значение пустое.
Т.е. список вида (хотя это не список, а просто строка):
"
1
2"
В листбокс видно именно пустое значение, т.к. остальные на других строках.
Короче, делай правильно список. Например, через Split:
Код:
Call doc.ReplaceItemValue("GXE_InfD_d_CandidListFormDB_TX", Split(stMsgString, chr(10)))
 

wowa

Well-known member
01.02.2007
845
0
#16
Для: Medevic
Большое спасибо, Очень тебе благодарен!!!!!!

Единственно остается пустая первая строка...
 

wowa

Well-known member
01.02.2007
845
0
#18
<!--QuoteBegin-Medevic+13:04:2007, 10:05 -->
<span class="vbquote">(Medevic @ 13:04:2007, 10:05 )</span><!--QuoteEBegin-->Кстати, Call doc.ComputeWithForm(True, False) можешь убрать.
[snapback]62332" rel="nofollow" target="_blank[/snapback]​
[/quote]
Вот это кстати лучше оставить.... иначе не так работает как надо..
СПАСИБО!