сложности с преобразованием типов

phantom76

Lotus team
25.02.2005
360
4
#1
Казалось, что раньше я решал уже данную задачу, но вспомнить как это делал не могу :)


пример:

есть статический массив, где каждый элемент определенный метод или имя переменной вида:

vColumnsArr(1,2) = {zdoc.GetItemValue("Created")(0)}

далее хотелось бы получить значение элемента массива не как строку, а как оператор:

vExcelObj.Cells(1, i ).Value = vColumnsArr(i,2) -> сейчас получается vExcelObj.Cells(1, i ).Value = {zdoc.GetItemValue("Created")(0)},

а нужно: vExcelObj.Cells(1, i ).Value = zdoc.GetItemValue("Created")(0)

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

phantom76

Lotus team
25.02.2005
360
4
#4
Спасибо! Разбираюсь, пока пока вылавливаю ошибки на этом операторе
 

phantom76

Lotus team
25.02.2005
360
4
#5
почему-то не получается даже в упрощенном варианте:

Declaration
Dim zdoc As NotesDocument
Dim vExcelObj As Variant
Dim vColumnsArr(1 To 8, 1 To 2) As Variant
Dim val2 As String


sub

Execute (val2 = zdoc.GetItemValue("Created")(0)) - срока 105
vExcelObj.Cells(j, k).Value = val2

---------------------------
Внимание
---------------------------
Ошибка: $EXECUTE$+1: Unexpected: False; Expected: Statement в строке 105
---------------------------
ОК
---------------------------
 

nvyush

Lotus team
22.04.2009
2 317
0
#6
phantom76
Execute {val2 = zdoc.GetItemValue("Created")(0)}
Выражение нужно в фигурные скобки заключить, иначе получается логическое сравнение, о чём, собственно, и сообщает Notes
 

phantom76

Lotus team
25.02.2005
360
4
#7
phantom76
Execute {val2 = zdoc.GetItemValue("Created")(0)}
Выражение нужно в фигурные скобки заключить, иначе получается логическое сравнение, о чём, собственно, и сообщает Notes
Спасибо, этот вариант я тоже пробовал:

в этом случае

---------------------------
Внимание
---------------------------
Ошибка: $EXECUTE$+1: Variant does not contain an object в строке 105
---------------------------
ОК
---------------------------

хотя

val2 = zdoc.GetItemValue("Created")(0) - все работает, zdoc задекларировал в соответствующем разделе
 
D

Darker

#8
phantom76

zdoc у Вас должен определяться непосредственно в Execute

Добавлено:
LotusScript considers text a separate script, compiling and executing it as a temporary module that's unloaded as soon as execution finishes.
 
D

Darker

#10
До Execute запомните UNID zdoc-а, и в Execute переполучите его
 

nvyush

Lotus team
22.04.2009
2 317
0
#11
phantom76
Все внешние переменные, используемые в Execute, должны быть объявлены как Public (и в разделе (Globals) если в форме/представлении).
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 600
277
#12
как выше указал nvy
добавлю, что Execute создаёт свой "временный" модуль, в кот. могут быть свои Initialize и Terminate (что иногда полезно)..., джек-пот и шлюхи :)