Добавление значения в конец списка

  • Автор темы fvoice
  • Дата начала
F

fvoice

Гость
#1
Есть переменная Array, тип Variant, нужно поместить произвольную строку в конце списка:
допустим
Array(0) = "1"
Array(1) = "2"

как на скриптах добавить элемент Array(2) = "3"?

P.S. Извините за глупый вопрос, в голову ничего не лезет..
 
F

fvoice

Гость
#3
Я уже пробовал, но может не правильно, т.к. конструкция типа:
Код:
Array = ArrayAppend(Array,"qwer")
не работает..
Medevic будь добр просвети пожалуйста почему?
 

morpheus

скриптописец
07.08.2006
3 915
1
#5
Для: fvoice
Error handling
ArrayAppend throws a Type mismatch error if:
sourceArray1 is not an array
an array with more than one dimension is used


Проверте что у Вас за массив Array
на крайняк
i = Ubound(Array) + 1
Redim Preserve Array( i )
Array( i ) = "123"
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
#7
Для: fvoice
Значит читай пост выше почему ошибка выскакивает. :rolleyes:
 

morpheus

скриптописец
07.08.2006
3 915
1
#9
Для: fvoice
так он array или Variant ???

проверкить легко - IsArray

Tests the value of an expression to determine whether it is an array.
Syntax
IsArray ( expr )
Elements
expr
Any expression.
Return value
IsArray returns TRUE (-1) if expr is an array; otherwise IsArray returns FALSE (0).
 
F

fvoice

Гость
#10
Есть переменная Array, тип Variant
Я передаю в функцию Item.Values, это и получается Array, поэтому он Variant, мне нужно прибавить к нему строку и вернуть ее обратно.
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
#11
Для: fvoice
Всё должно работать. Ошибка точно в этой строке? Дебаггером пользовался?
 
F

fvoice

Гость
#12
Для: Medevic
Да, только там чуть по другому:
Array = ArrayAppend(Array,doc.Field(0))
но это ничего не меняет.

наверное, придется переделать в процедуру, передавать как item и добавлять AppendToTextList...
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
#13
Для: fvoice
Как Array получаешь? В дебаггере это массив?
 
S

Sandr

Гость
#14
Если масив объявлен как масив определенной размерности, то надо сделать redim preserve
 
A

Azrael

Гость
#15
Используй списки:
Код:
Dim array List As String
Подробнее - в справке.
 

LuMee

Well-Known Member
02.05.2006
477
0
#16
Раз пошла такая пьянка, то тоже спрошу. В общем, у меня имеется схожая задача, только значение нужно дописать не просто в массив, а в поле документа. Пытаюсь делать так:
Код:
Dim arr As Variant
arr = doc.GetItemValue("SomeField")
arr = Arrayappend(arr, <какое-то значение>)
doc.ReplaceItemValue "SomeField", arr
Так вот, если в даном поле документа еще нет значений, то на строке с Arrayappend Lotus Notes (версия 5.0.4а) торжественно обрушивается. Знает ли кто-нибудь, что это за ерунда и как это половчее обойти?
 

morpheus

скриптописец
07.08.2006
3 915
1
#18
Для: LuMee
Вам наверное лучше пользоваться

AppendToTextList method

For an item that's a text list, adds a new value to the item without erasing any existing values.


Syntax
Call notesItem.AppendToTextList( newValue )
Parameters
newValue
String or array of strings. The string(s) you want to add to the item.


1. This script appends the text value "Shocks" to the Categories item in a document. For example, if the Categories item contains the values "Clocks" and "Blocks" before the script runs, it contains the values "Clocks," "Blocks," and "Shocks" after the script runs.
Код:
Dim doc As NotesDocument
Dim item As NotesItem
' ...set value of doc...
Set item = doc.GetFirstItem( "Categories" )
Call item.AppendToTextList( "Shocks" )
Call doc.Save( False, True )
 

LuMee

Well-Known Member
02.05.2006
477
0
#19
Для: fvoice, Morpheus
Я так понимаю, что сей метод жует только строки. Мне, увы, нужно работать с датами, так что такой вариант не подходит :rolleyes: