Dialog + Replace

  • Автор темы Grrr
  • Дата начала
G

Grrr

#1
Здравствуйте! Пытаюсь через диалог вызвать форму(Tema) с новым полем значения (NovayaTema), после чего заменить значение поля (StarayaTema) в документах, кодик:
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Set db = session.CurrentDatabase
Set dc = db.UnprocessedDocuments
Set doc = dc.GetFirstDocument()
If ws.DialogBox("Tema", False, False, False, True, False, False, "Изменение темы", doc , True) Then
While Not(doc Is Nothing)
Call doc.ReplaceItemValue("StarayaTema", NovayaTema)
Call doc.Save(False, False )
Set doc = dc.GetNextDocument(doc)
Wend
Call ws.ViewRefresh
End If
End Sub
Что я делаю не так? Спасибо.
 
A

allex

#4
Здравствуйте! Пытаюсь через диалог вызвать форму(Tema) с новым полем значения (NovayaTema), после чего заменить значение поля (StarayaTema) в документах, кодик:

Что я делаю не так? Спасибо.
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Set db = session.CurrentDatabase
Set dc = db.UnprocessedDocuments
Set doc = dc.GetFirstDocument()
If ws.DialogBox("Tema", False, False, False, True, False, False, "Изменение темы", doc , True) Then
While Not(doc Is Nothing)
Call doc.ReplaceItemValue("StarayaTema", doc.NovayaTema(0))
Call doc.Save(False, False )
Set doc = dc.GetNextDocument(doc)
Wend
Call ws.ViewRefresh
End If
End Sub
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#5
Код:
Dim dummydoc As NotesDocument 
...
Set dummydoc = db.CreateDocument()
...
If ws.DialogBox("Tema", False, False, False, True, False, False, "Изменение темы", dummydoc , True) Then
...
Call doc.ReplaceItemValue("StarayaTema", dummydoc.GetItemValue("NovayaTema"))
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#7
А еще можно просто через notesUIWorkspace.Prompt сделать. :(
 
G

Grrr

#8
Почему то не отрабатывает.. Вообще форму которую я вызываю содержит кнопку с формулой dblookup, которая присваивает значение другому полю (изменяемому) Tema. Незнаю влияет ли это как то на выполнение кода.

Ура! Получилось по первому методу, почему то надо было назвать поле в форме поиска таким же именем что и в док-тах где делается замена.
 
G
#10
По моему всё работает нормально. Операцию выполнял в папке, которая в конце кода рефрешится.
 
G
#11
Спасибо Всем за советы, особенно allex'у! Чтобы не создавать новую тему, решил задать вопрос здесь.
Нашёл небольшой примерчик выгрузки представления в лист экселя (книга lotus develop. toolbox), к сожалению там не учитываются формулы в столбцах, а есть возможность выгружать только поля, находящиеся в столбцах. Логичный вопрос: Можно ли добавив новое поле в форму и соответственно высчитывав нужные поля по формулам в нём, подставить его в представление? Отсюда ещё такой вопросик:
Допустим я добавлю в форму новое поле, которое будет складывать два поля и другие операции (тут не важно), я должен буду обновить формы всех созданных ранее документов? Ведь до этого документа создавались пусть и по одноимённое форме, но без этого нового поля. Как обновить все документы по новой форме?
 
G
#14
Кто сталкивался с такой проблемой при выгрузке в Excel: error 213: ole: automation object error?
Add: видимо проблема с офисом (2003), попробую поставить 2007, думаю вопрос должен решиться.
 
G
#15
Непонятнка получилась, не придал этому значения. В коде, почему то изменяет только один документ из коллекции..
If ws.DialogBox("TematikaChange", False, False, False, True, False, False, "Изменение тематики", doc, True) Then
While Not(doc Is Nothing)
Call doc.ReplaceItemValue(Tema", doc.Tema(0))
Call doc.Save(False, True)
Set doc = dc.GetNextDocument(doc)
Wend
Call ws.ViewRefresh
End If
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#16
Потому что эта строчка практически лишена смысла:
Call doc.ReplaceItemValue(Tema", doc.Tema(0))
 
A

amigolinx

#17
Непонятнка получилась, не придал этому значения. В коде, почему то изменяет только один документ из коллекции..
Дело в том, что в результате выполнения на каждом доке из коллекции
Call doc.ReplaceItemValue("Tema", doc.Tema(0))
замена происходит, да, ... но значение поля заменяется само на себя же. То есть на пальцах - для замены ItemValue "Tema" на doc берется значение поля Tema на этом же doc. Не возникает ощущения дежавю после этого? dummydoc - рулит и notesUIWorkspace.Prompt - тоже, однозначно