Аналог @dblookup в Lotusscript

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

Guest


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

Dim session As NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim cDoc As NotesDocument
Dim view As NotesView	

Set uidoc = workspace.CurrentDocument	
Set cDoc= uidoc.Document

Set session = New NotesSession	
Set db = session.GetDatabase("Elephant/ICTP","Work/Docs/performing.nsf")
Set view = db.GetView ("ContragentsForContracts" )
Set doc = view.GetDocumentByKey(uidoc.FieldGetText("ContractParties"))

Call uidoc.FieldSetText("TaxPay", doc.GetItemValue ("ContractPartyActive")(0))

'	Call uidoc.Save
'	Call cDoc.Save (True, False,False) 
'	Call uidoc.Refresh

End Sub
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
Денис Кириченко
А в OnChange ты убрал код?
Кстати, в вместо uidoc используй Source.
 
O

Omh

Денис Кириченко
Я бы сделал view statsic'ом
И сетил бы значение через background документ.
Примерно так:

Код:
Sub Queryrecalc(Source As Notesuidocument, Continue As Variant)
On Error Goto Errh

Dim Doc as NotesDocument
Set Doc = Source.Document
if Doc is Nothing then Exit Sub

Dim session As new NotesSession

Static db As NotesDatabase
Static view As NotesView  
if db is Nothing then Set db = session.GetDatabase("Elephant/ICTP","Work/Docs/performing.nsf")
if view is Nothing then Set view = db.GetView ("ContragentsForContracts" )

Dim OtherDoc as NotesDocument
Set OtherDoc = view.GetDocumentByKey(Doc.GetItemValue("ContractParties")(0), True)
if Not OtherDoc is Nothing then
Call Doc.ReplaceItemValue("TaxPay", OtherDoc.GetItemValue("ContractPartyActive")(0))
end if


Exit Sub
errh:
Msgbox Error & | in line | & Erl(), 64, |Lotus Notes (| & Lsi_info(2) & |)|
Exit Sub
End Sub
 
G

Guest

Денис Кириченко
А в OnChange ты убрал код?
Кстати, в вместо uidoc используй Source.

Убрал в OnChange код, что uidoc, что Source, одно и то же :(

Денис Кириченко
Я бы сделал view statsic'ом
И сетил бы значение через background документ.
Примерно так:

Код:
Sub Queryrecalc(Source As Notesuidocument, Continue As Variant)
On Error Goto Errh

Dim Doc as NotesDocument
Set Doc = Source.Document
if Doc is Nothing then Exit Sub

Dim session As new NotesSession

Static db As NotesDatabase
Static view As NotesView  
if db is Nothing then Set db = session.GetDatabase("Elephant/ICTP","Work/Docs/performing.nsf")
if view is Nothing then Set view = db.GetView ("ContragentsForContracts" )

Dim OtherDoc as NotesDocument
Set OtherDoc = view.GetDocumentByKey(Doc.GetItemValue("ContractParties")(0), True)
if Not OtherDoc is Nothing then
Call Doc.ReplaceItemValue("TaxPay", OtherDoc.GetItemValue("ContractPartyActive")(0))
end if


Exit Sub
errh:
Msgbox Error & | in line | & Erl(), 64, |Lotus Notes (| & Lsi_info(2) & |)|
Exit Sub
End Sub

Зашибись Omh, все работает, very, very Big ThAnKs :)
 
O

Omh

Денис Кириченко
Посмотри Input validation у поля "TaxPay"
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
Поле TaxPay какого типа? Вычисляемое? Если да, то какая формула?
 
O

Omh

Денис Кириченко
Ты в бэкграунд документ пробовал писать?
Я тебе об этом уже 2 дня говорю...
 
O

Omh

Исправляйся.
Потом отпиши о результатах :)
 
G

Guest

Исправляйся.
Потом отпиши о результатах :)
Переменная view пуста, а при этом
Код:
Static view As NotesView  
If db Is Nothing Then Set db = session.GetDatabase("Elephant/ICTP","Work/Docs/performing.nsf")
If view Is Nothing Then Set view = db.GetView ("ContragentsForContracts" )
условие - Is Nothing считает наоборот ?!?!? :(
 
O

Omh

При декларации переменная объекта равна Nothing.
 
O

Omh

А я проблемы не понял, если честно.
А в ответ так... "в лужу пёрднул"
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
Ну так, вот переменная view - пустая (сужу по отладчику smile.gif и когда проходит условие If view Is Nothing, то переменная view не сетится. Как я предпологаю if расценивает переменную view не пустой, хотя та пустая sad.gif
Метод db.GetView ("ContragentsForContracts" ) мог вернуть Nothing.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!