0 / 0 / 0
Регистрация: 19.03.2012
Сообщений: 185
1

Получение списка всех полей формы

22.05.2012, 15:51. Показов 19679. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
День добрый.
Возникла необходимость держать под рукой список всех полей формы. Можно ли его как то получить, а еще лучше распечатать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.05.2012, 15:51
Ответы с готовыми решениями:

Как Получить Список Всех Полей Формы?
День добрый. Возникла необходимость держать под рукой список всех полей формы. Можно ли его как то...

Действие на получение фокуса, заданное сразу для всех полей формы
Цель - задать действие на получение фокуса сразу для всех полей формы (а не через свойства каждого...

Получение списка полей таблицы и определение первичного ключа из этого списка
Приветствую всех. Долго бьюсь над одной локальной задачей, необходимо извлечь список полей для...

Получение значений полей формы.
Нужно, чтобы человек вводил в поле число. Если число от 0 до 50 и от 100 и больше, высвечивать...

21
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 127
22.05.2012, 15:56 2
Создалось 2 темы, отвечу сюда.

doc.Items возвращает массив полей. Через цикл получаешь название каждого поля
0
Tyo
22.05.2012, 16:04 3
NotesForm.Fields
0 / 0 / 0
Регистрация: 19.04.2009
Сообщений: 2,219
22.05.2012, 16:07 4
LotusScript
1
2
3
Set nForm = notesDatabase.GetForm( name$ )
msgbox(join(nForm.Fields, {
}))
0
1 / 1 / 0
Регистрация: 07.12.2009
Сообщений: 1,197
23.05.2012, 14:15 5
LotusScript
1
Msgbox(Join(nForm.Fields, Chr(13)))
;)
0
0 / 0 / 0
Регистрация: 16.07.2007
Сообщений: 849
23.05.2012, 15:00 6
Не забудьте учесть поля в подформах ;)
0
0 / 0 / 0
Регистрация: 19.03.2012
Сообщений: 185
21.01.2013, 16:15 7
День добрый. Дабы не плодить тем, спрошу тут.
Возникла необходимость проверить все поля формы на непустоту, и если поле пусто прописать туда значение EMPTY. Что лучше использовать NotesForm.Fields или NotesDocument.Items? Как это потом передать в массив, ибо при все моих попытка просто приравнять компилятор ругается.
0
0 / 0 / 0
Регистрация: 16.07.2007
Сообщений: 849
21.01.2013, 16:33 8
NotesDocument.Items - бегает по всем полям в документе.
NotesForm.Fields - по всем полям формы.

документ и форма это совершенно разные штуки, так надо выбрать от задачи...
0
0 / 0 / 0
Регистрация: 19.03.2012
Сообщений: 185
21.01.2013, 16:40 9
Да, видимо неправильно выразился.
Надо проверить поля текущего документа на непустоту. Т.е. мне нужен NotesDocument.Items? А как передать его в массив?
0
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
21.01.2013, 16:48 10
Контекст какой? при сохранении? или в агенте для поиска отбора?
0
0 / 0 / 0
Регистрация: 19.03.2012
Сообщений: 185
21.01.2013, 16:53 11
Этот документ после сохранения будет копироваться агентом в другую базу.
0
0 / 0 / 0
Регистрация: 14.01.2009
Сообщений: 257
21.01.2013, 16:57 12
LotusScript
1
2
3
4
5
Dim doc As NotesDocument
 
Forall i In doc.Items
Messagebox( i.Name )
End Forall

LotusScript
1
2
3
4
5
6
7
8
9
10
11
12
13
Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase
Forall form In db.Forms
Forall field In form.Fields
fieldCount = fieldCount + 1
msgString = msgString & Chr(10) & "  " & field
End Forall
Messagebox form.Name & " has " & fieldCount & " field(s):" & Chr(10) & msgString
End If
Exit Sub
End If
End Forall
0
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
21.01.2013, 17:02 13
Eugen
Я сомневаюсь, что критерии копирования заключаются в проверке полей на EMPTY...
Перебирать можно через Forall, как указал erdi.
Лично я бы вывел необходимые критерии вбил бы их в список и делал Forall по этому списку.
Полей в документе может быть реально много, а критериев обычно меньше.
0
0 / 0 / 0
Регистрация: 19.03.2012
Сообщений: 185
21.01.2013, 17:15 14
Мне это нужно для выгрузки в xml. Скопированный документ впоследствии будет выгружен в xml и трансформирован с помощью XSLT для передачи в веб-сервис. А чтобы веб-сервис схавал мою xml, она должна соответствовать схеме, согласно которой вместо пустых значений должно стоять "EMPTY". Т.е. есть база №1 где хранится оригинал документа, и есть база №2, в которую он должен быть скопирован уже проставленным EMPTY.


Добавлено: PS: как то запутанно объяснил, но не представляю как объяснить иначе)
0
0 / 0 / 0
Регистрация: 19.03.2012
Сообщений: 185
21.01.2013, 17:25 15
Пробую так, но на строке itemval=doc.Getitemvalue(doc.Items(i)) выдает Type mismatch

LotusScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    Dim w As New NotesUIWorkspace
Dim doc As NotesDocument
Dim itemval As string
Dim i As Integer
 
Set doc=w.Currentdocument.Document
 
ForAll item In doc.Items
i=i+1
itemval=doc.Getitemvalue(doc.Items(i))
If itemval="" Then
itemval="EMPTY"
End If
End ForAll
0
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
21.01.2013, 17:27 16
LotusScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dim w As New NotesUIWorkspace
Dim doc As NotesDocument
Dim itemval As Variant
Dim i As Integer
 
Set doc=w.Currentdocument.Document
 
ForAll item In doc.Items
i=i+1
itemval=doc.Getitemvalue(Item.Name)
itemval = Fulltrim(itemval)
If itemval(0)="" Then
itemval="EMPTY"
End If
End ForAll
З.Ы. не проверял
0
0 / 0 / 0
Регистрация: 19.03.2012
Сообщений: 185
21.01.2013, 17:49 17
Цитата Сообщение от savl

LotusScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dim w As New NotesUIWorkspace
Dim doc As NotesDocument
Dim itemval As Variant
Dim i As Integer
 
Set doc=w.Currentdocument.Document
 
ForAll item In doc.Items
i=i+1
itemval=doc.Getitemvalue(Item.Name)
itemval = Fulltrim(itemval)
If itemval(0)="" Then
itemval="EMPTY"
End If
End ForAll
З.Ы. не проверял
Спасибо, заработало. Только чуть дописал:

LotusScript
1
2
3
4
If itemval(0)="" Then
itemval="EMPTY"
Set item = doc.ReplaceItemValue(Item.Name, itemval)
End If
0
0 / 0 / 0
Регистрация: 16.07.2007
Сообщений: 849
21.01.2013, 17:52 18
капец весело тут у вас...
так то у поля тип есть...

копайте NotesItem class.



Добавлено:


Цитата Сообщение от Eugen
Спасибо, заработало. Только чуть дописал:

LotusScript
1
2
3
4
If itemval(0)="" Then
itemval="EMPTY"
Set item = doc.ReplaceItemValue(Item.Name, itemval)
End If
А если поле будет многозначным у которого первое значение пустое а 2..5.. не пустые?
Ваш кож выдаст ошибку если наткнется на поле с типом даты/суммы/...
0
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
21.01.2013, 17:59 19
kizarek
да я не спорю, RT с картинкой так тоже не проверить (вроде как)
для многозначных Fulltrim должен помочь
Eugen
а вот так

LotusScript
1
Set item = doc.ReplaceItemValue(Item.Name, itemval)
я бы не делал, лучше старое значение не заменять.
В общем, надо продумать всю задачу, надо ли все поля грузить, какие типы.
Сходу решение есть, но оно некорректно и не оптимально.

Не просто так спрашивал контекст задачи, тот же xml можно и руками создавать, а не генерить стандартными методами.
И схема тогда измениться может и файлы xml будут меньшим размером.
0
0 / 0 / 0
Регистрация: 19.03.2012
Сообщений: 185
21.01.2013, 18:15 20
Понятно, что это не конечное решение. Буду "допиливать"... Всем спасибо.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.01.2013, 18:15
Помогаю со студенческими работами здесь

Получение значения с полей формы
Всем привет . Надо сделать программу которая переводит единицы в другие единицы измерения Как...

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

Получение списка всех пользователей
Пока пробую таким способом, но на точке остонова пишет пустой элемент dropDownUser. ...

Считывание всех полей формы
Доброй ночи ;) Существует страница на которой динамически строится форма...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru