Формирование имени поля документа

Kizarek86

Well-Known Member
Lotus team
20.07.2007
861
6
#1
Сразу пардон за название темы, незнал как обозвать)
В общем следующий вопрос, возможно ли как то формировать имя поля для обращения к нему путём неявного ввода.
Например есть поля:
поле1,поле2....полеN
Сейчай обрабатываю так:
doc.Поле1=....
doc.Поле2=....
.........
doc.Поле3=....
Хотелось бы сделать так чтобы не обращаться к каждому полю выделяя на это новую строчку кода, а формировать имя поля по формуле и обрабатывать в цикле например, в данном случае у нас имя полей отличаются только цифрой это было бы удобно)
 

Gor

Well-Known Member
07.06.2005
517
2
#3
если я правильно понял

For i = 1 To 999
nam = "поле"+ Fulltrim(Str(i)) 'имя поля

znac = uidoc.FieldGetText(nam) 'значение поля. Можно через doc.getitemvalue

Next

??
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
#4
Я стормозил. Конечно же NotesDocument.ReplaceItemValue и @SetField. ;)
 

morpheus

скриптописец
07.08.2006
3 915
1
#5
Для: Gor
Код:
For i = 1 To 999
nam = "field"+ Str(i) 'имя поля 
znac = uidoc.Document.ReplaceItemValue(nam, "NEW_VALUE")
Next
 

Kizarek86

Well-Known Member
Lotus team
20.07.2007
861
6
#6
Чёт у мну сёня день мистики)))или тупки)

Names = "Поле" + Cstr(i)
Tmp=doc.GetItemValue(Names)
Messagebox(Tmp) или Messagebox(Cstr(Tmp)) <----Тут ругается на несоответствие типов данных...

Для: Gor
Для: Medevic
Для: Morpheus
Спасибо
 

morpheus

скриптописец
07.08.2006
3 915
1
#7
Для: kizarek
Tmp=doc.GetItemValue(Names)(0)

Tmp - это строка по всей видимости а GetItemValue - это массив значений
 

Kizarek86

Well-Known Member
Lotus team
20.07.2007
861
6
#8
Для: Morpheus
Угу пасип, разобрался, там в зависимости от типа поля возвращаемое значение может быть и массив и число и текст)
 

morpheus

скриптописец
07.08.2006
3 915
1
#9
Для: kizarek
ну да, тольк GetItemValue это всегда Array(0 ... n)
 

Kizarek86

Well-Known Member
Lotus team
20.07.2007
861
6
#10
Вот опять залип:
For i = 1 To 999
nam = "field"+ Str(i) 'имя поля
znac = uidoc.Document.ReplaceItemValue(nam, "NEW_VALUE")
Next

тут ругаемся)
ReplaceItemValue присваивает полю "nam" значение "NEW_VALUE", и возврашает NotesItem (не пойму зачем нужен)
так вот, на конструкцию типа
znac = docST.ReplaceItemValue(Name2, ms)
ругается.
где Name2 - поле числовое, ms - число.
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
#13
Для: kizarek
Млин. Я кратко написал. Еще Call нужен.
Call docST.ReplaceItemValue("Name2", ms)
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
#16
<!--QuoteBegin-kizarek+23:01:2008, 12:29 -->
<span class="vbquote">(kizarek @ 23:01:2008, 12:29 )</span><!--QuoteEBegin-->А вот и не надо там кавычки
[snapback]94681" rel="nofollow" target="_blank[/snapback]​
[/quote]
Ну так телепатов здесь нету. :)
 

Kizarek86

Well-Known Member
Lotus team
20.07.2007
861
6
#17
Кстати вот ещё проблемка возникла интересная. Переполняется стек при создании массива.
Причем если создавать просто кнопку на форме, то всё отлично, если кнопку с тем же кодом поместить на панель действий, получаем ошибку о переполненном стеке( кто нить сталкивался?
 

morpheus

скриптописец
07.08.2006
3 915
1
#18
Для: kizarek
а код можо привести, бо телепатом и вправду тут нету
скорее всего у Вас где то бесконечный цикл
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
#19
<!--QuoteBegin-Medevic+23:01:2008, 12:31 -->
<span class="vbquote">(Medevic @ 23:01:2008, 12:31 )</span><!--QuoteEBegin-->телепатов здесь нету
[snapback]94682" rel="nofollow" target="_blank[/snapback]​
[/quote]
:)
 

Kizarek86

Well-Known Member
Lotus team
20.07.2007
861
6
#20
Для: Morpheus
Ошибка возникает именно при инициализации массива, причём в 1 случае работает нормально, в другом нет.
Код:
Dim Detal(40,20,2) As String 'собраные из док. за месяц данные
Dim VybDet(800,2) As String 'вспомогательный массив
ругается на вторую строчку. Если интересует могу и весь код выложить)

причём ещё и не всегда ругается)) как на скрипте программно стек почистить?))