Маленький вопрос по Querymodechange

  • Автор темы SOFTOBZOR.ru
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

SOFTOBZOR.ru

#1
Мне необходимо что-бы если док. редактирют (начинают редактировать) значение 1 поля очищалось.
Делаю так:

Код:
Dim doc As NotesDocument
Dim item As NotesItem
Set item = doc.ReplaceItemValue _
( "Pole", "" )
'Call doc.Save( True, True )
Ругаеться....
 
O

oshmianski

#4
Для: SOFTOBZOR.ru
в какой момент и где делаешь? как ругается?


ммм, в QueryModeChange. мимо пролетело. извиняюсь.
как ругается?
 
S

SOFTOBZOR.ru

#5
Засунул в Querymodechange
В документе есть кнопка [редактировать]
Тыкаю в нее
Код:
---------------------------
Lotus Notes
---------------------------
Object variable not set
---------------------------
ОК  
---------------------------
 

morpheus

скриптописец
07.08.2006
3 915
1
#6
<!--QuoteBegin-SOFTOBZOR.ru+15:01:2007, 11:51 -->
<span class="vbquote">(SOFTOBZOR.ru @ 15:01:2007, 11:51 )</span><!--QuoteEBegin-->а пример для глупых
[snapback]53164" rel="nofollow" target="_blank[/snapback]​
[/quote]
Код:
 Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Set uidoc = workspace.CurrentDocument
Set doc = uidoc.Document
....
 

Kee_Keekkenen

Well-known member
05.09.2006
639
4
#7
в декларашионс формы, объяви uidoc и doc, в постопен их (uidoc и doc) инициализируй,
а в кверимодченч уже используй твой doc
 
O

oshmianski

#8
Для: Morpheus
Для: Kee_Keekkenen
вот, е-мае. шустрые ребята. я только покурить вышел... :)
 
S

SOFTOBZOR.ru

#9
Мужики спасибо работает, но криво!

Код:
Sub Querymodechange(Source As Notesuidocument, Continue As Variant)

Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Set uidoc = workspace.CurrentDocument
Set doc = uidoc.Document
Dim item As NotesItem

Set item = doc.ReplaceItemValue( "Factor", "" )
Call doc.Save( True, True )
Call workspace.ViewRefresh

End Sub
Получается такая бяка, открываю док.
Есть в нем поле - текстовое, редактируемое которое и нужно очистить.
Если сделать так [Редактировать] [Закрыть] [Открыть] - то поле очищено
А если так [Редактировать] [Сохранить] [Закрыть] [Открыть] - то поле не очищено

Что может быть?
Т.е. мне надо когда док открыли на редактирование что бы поле это было чистиньким.
 
O

oshmianski

#10
Для: SOFTOBZOR.ru
поле Factor редактируемое или вычисляемое? какое значение у этого поля по-умолчанию?
смотри скрипт на QuerySave.
 
S

SOFTOBZOR.ru

#11
Factor это редактируемое поле, значение по умолчанию = ""
Когда создаеться документ это поле обязательное для ввода.

Создают, вводят Foctor, сохраняют, когда редактируют, нужно что-бы это поле очистилось для ввода новых данных и сохраняли.

Тут хитрость в том что это поле имеет следующий смысл [причина редактирования] есть другое поле в которое заносяться все причины, редактирования данного документа.
То есть

[Factor] = "Прична такак-то"

[FactorLog] = FactorLog+Factor
 

Kee_Keekkenen

Well-known member
05.09.2006
639
4
#12
лучше сделай так
Код:
Sub Postmodechange(Source As Notesuidocument)
Call source.Fieldsettext("Factor","")
source.Refresh
End Sub
если нужно, то сохраняй текущее состояние
 
F

Fossil Code

#13
Код:
Sub Querymodechange(Source As Notesuidocument, Continue As Variant)

Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Set uidoc = workspace.CurrentDocument
Set doc = uidoc.Document
Dim item As NotesItem

Set item = doc.ReplaceItemValue( "Factor", "" )
Call doc.Save( True, True )
Call workspace.ViewRefresh

End Sub
...
Т.е. мне надо когда док открыли на редактирование что бы поле это было чистиньким.
Для начала чисто техническое замечание: вот этого всего не нужно по определению.

Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Set uidoc = workspace.CurrentDocument
Set doc = uidoc.Document

Вполне довольно Set doc = source.Document. Ведь сорс уже передан как параметр.

Второе, кто будет писать Continue = FALSE/TRUE? А то бедное событие не может понять, отрабатывать ему или нет.

Наконец, есть свойство

To get: flag = notesUIDocument.EditMode
To set: notesUIDocument.EditMode = flag
Legal values
True indicates that the document is in Edit mode.

Его можно использовать в событии PostModeChange, чтобы очистить поле _после_ перехода документа в режим редактирования.

Удачи!
 
Статус
Закрыто для дальнейших ответов.