• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

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

  • Автор темы phantom76
  • Дата начала
P

phantom76

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


пример:

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

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)

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

nvyush

Execute "vExcelObj.Cells(1, i ).Value = " & vColumnsArr(i,2)) '???
 
P

phantom76

Спасибо! Разбираюсь, пока пока вылавливаю ошибки на этом операторе
 
P

phantom76

почему-то не получается даже в упрощенном варианте:

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
---------------------------
ОК
---------------------------
 
N

nvyush

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

phantom76

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

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

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

nvyush

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

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
217
как выше указал nvy
добавлю, что Execute создаёт свой "временный" модуль, в кот. могут быть свои Initialize и Terminate (что иногда полезно)..., джек-пот и шлюхи :)
 
Мы в соцсетях:

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