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

Перенос Значения Поля В Другую Форму

28.11.2011, 10:22. Показов 51603. Ответов 53
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!
Я в языке lotusscript пока очень мало знаю, подскажите пожалуйста такой вопрос, если можно по подробнее.
Коротко опишу начало:
В общем, в моей базе при выборе конкретного вида отображается список документов - это так сказать шаблоны, при открытии любого документа у меня открывается форма, конкретно заданная, одна и та же, у любого из этих документов. На этой форме есть несколько полей, с уже внесенными данными (поля в виде переключателей), так же на форме есть кнопка для создания нового документа и переноса значений этих полей.
Так вот суть проблемы в чем - при нажатии на эту кнопку надо бы что б значения переносились :welcome: вот у меня что то не получается так сделать, подскажите пожалуйста, уже неделю мучаюсь с этим.
Пока у моей кнопки таков программый код, написанный на lotusscript:

Sub Click(Source As Button)
Dim session As New NotesSession
Dim dbApplication As NotesDatabase
Dim ProcessID As String
Dim ErrString As String
Dim workspace As New NotesUIWorkspace
Dim docUI As NotesUIDocument
Dim docNew As NotesDocument
Dim v As Variant
Dim docMain As NotesDocument
Dim docCur As NotesDocument

Set docUI = workspace.CurrentDocument
Set dbApplication = session.CurrentDatabase

v = Evaluate({"Новый док":""})
Call DPWA_InitiateProcess(dbApplication, v(0), Nothyng, "", "", ErrString)

End Sub

Я пробовал командой "Call docMain.AppendItemValue(Listtag(vl), v)" - но что то не получилось
пробовал "GetItemValue" - так же без успешно, да, и во время эксперементов очень часто появлялась ошибка "Object Variable Not Set"

Помогите люди добрые
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.11.2011, 10:22
Ответы с готовыми решениями:

Перенос поля в другую форму
Access&Delphi 7 Есть готовая таблица с готовыми данными, и кнопка чтобы подсчитать- при нажатии...

Перенос значения поля из одной формы в другую CF 7
Здравствуйте, есть 2 разные формы на разных страницах, как перенести заполненные значения поля из...

Перенос значения поля из одной формы в другую
Здравствуйте! Имеется форма (форма 1), на подобии записи о происшествии. При происшествии...

Перенос значения поля из одной формы в другую
Здравствуйте! Имеется форма (форма 1), на подобии записи о происшествии. При происшествии...

53
0 / 0 / 0
Регистрация: 24.11.2011
Сообщений: 50
02.12.2011, 14:52 41
Author24 — интернет-сервис помощи студентам
текст ошибки?

Ошибка Notes - не удается найти поле

то коперни его Ctrl+C когда оно открыто.

не совсем понятно что с этим потом делать

Попробуй все же сделать Design Synopsys и поискать по тексту сообщения.

сделал бы, но не знаю как....

Ничего не появляется из ниоткуда)

Я знаю...но не могу найти

и ниразу язык не сложнее того же дельфи - не надо сочинять...

ну не скажи...в делфи даже чужой текст кода легко понять можно, а тут скока книг читал, я даже не нашел что б о таких вещах что нибудь написано было (книги на русском языке)
0
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
02.12.2011, 15:46 42
странно... Replace функция в backе ей должно быть все равно есть поле или нет...

Сделай обработчик ошибок, вот самый простой:

Sub Click(Source As Button)
On Error goto handler

{твой код кнопки}

Goto endh

handler:
Msgbox {Error #} & Err & {: } & Error$ & { in line } & Erl
resume Endh
endh:

End Sub


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

Когда возникает ошибка у тебя на экране появляется msgBox с кнопкой Ок. Если не закрывать окно, то когда оно в фокусе операция копирования сохраняет его содержание в буфер как текст.

Получается что-то подобное, если вставить в блокнот:

IBM Lotus Notes
------------------------------
Object Variable Not Set

OK
------------------------------

чтобы сделать DS надо в дизайнере, слева где элементы найти пункт с таким названием, далее выбрать нужные элементы дизайна, только не все сразу. И нажать ОК, откроет вкладка с информацией. Если там выбрать библиотеку LS. то на вкладке будет ее код.

Вот тут написано как сделать, Lotus 6.5 и 7.0:
http://web2.cba.gov.ar/help/help65_designe...18?OpenDocument

Для Lotus 8 немного иначе:
http://publib.boulder.ibm.com/infocenter/d...GN_SUMMARY.html

Язык английский
0
0 / 0 / 0
Регистрация: 24.11.2011
Сообщений: 50
05.12.2011, 08:00 43
прикольная вещь с ошибкой..
Ну вот что у меня получилось:

---------------------------

---------------------------
Error #4412: Notes Error - Cannot locate field in line 27
---------------------------
ОК
---------------------------

А 27 строка это:

"Call docN.FieldSetText({Field1},docOld.Document.GetItemValue({Field2})(0))"

все таки...

Добавлено: да, и лотус у меня 7(англ), я в нем в дизайнере лазию, ну и клиент 7 тоже есть, а так вся работа в лотусе 8.5-клиент
0
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
05.12.2011, 09:23 44
docN - NotesUIDocument. который открыт, который в режиме редактирования.
Field1 - Редактируемое (Editable) на форме поле, оно должно быть на форме. Не RichText.

Для ричтекста используй:
Set notesRichTextItem = doc.CreateRichTextItem("Body")
notesRichTextItem.AppendText("This is the email body.")
0
0 / 0 / 0
Регистрация: 24.11.2011
Сообщений: 50
05.12.2011, 09:51 45
Цитата Сообщение от savl
docN - NotesUIDocument. который открыт, который в режиме редактирования.
Field1 - Редактируемое (Editable) на форме поле, оно должно быть на форме. Не RichText.
Да, все верно, все редактируемое, поле не РичТекст, но не помогает...
0
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
06.12.2011, 13:11 46
странно... сделал вот такую кнопку:

Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = ws.CurrentDocument
Dim doc As NotesDocument
Set doc = uidoc.Document
Call uidoc.FieldSetText("registrator", doc.GetItemValue("Customer")(0))
Call uidoc.Refresh

отработало без проблем.
0
0 / 0 / 0
Регистрация: 15.05.2009
Сообщений: 1,454
06.12.2011, 13:47 47
а на момент выполнения кода "Call docN.FieldSetText({Field1},docOld.Document.GetItemValue({Field2})(0))"
документ DocN открыт в клиенте и поле "Field1" - редактируемое (editable), показывается в этом документе (т.е. не скрыто формулами скрытия) и его можно редактировать?
0
0 / 0 / 0
Регистрация: 24.11.2011
Сообщений: 50
06.12.2011, 16:16 48
Цитата Сообщение от OKEN
документ DocN открыт в клиенте и поле "Field1" - редактируемое (editable), показывается в этом документе (т.е. не скрыто формулами скрытия) и его можно редактировать?
да, получается выполняется процедурка Call DPWA_InitiateProcess(dbApplication, v(0), Nothyng, "", "", ErrString) - открывается новый док, потом выполняется Call docN.FieldSetText({Field1},docOld.Document.GetItemValue({Field2})(0)) и ругается что неможет найти поле.
но когда я захожу в свойства документа - там действительно моего поля, куда я хочу перенести значения, хотя на форме оно есть, сохраняю док, и только после этого в свойствах появляется это поле...
0
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
06.12.2011, 17:58 49
FieldSetText вносит значение, но в документ оно пропишется только после сохранения.

Попробуй replaceItemValue


LotusScript
1
2
3
4
5
dym docNN as NotesDocument
Set docNN = docN.Document
call docNN.ReplaceItemValue({Field1},docOld.Document.GetItemValue({Field2})(0))
 
call docN.Refresh
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
06.12.2011, 20:09 50
я приводил пример без промежуточного сохранения... (всё работает)
чё там мудрить - всё предельно просто - надо возвращать uidoc и не будет заморочек, ато придумают проблему из-за собственной твердолобости.... и кучу времени потратят, на "несуществующие" задачи
0
0 / 0 / 0
Регистрация: 24.11.2011
Сообщений: 50
07.12.2011, 07:32 51
Цитата Сообщение от savl
Попробуй replaceItemValue

dym docNN as NotesDocument
Set docNN = docN.Document
call docNN.ReplaceItemValue({Field1},docOld.Document.GetItemValue({Field2})(0))

call docN.Refresh
Да, так ошибки нет, но и не присваевает значение полю...:(

Я вот думаю может уже на крайний случай сделать после процедуры создания документа, что б вызывался агент, по условию, а в агенте тупо простыми действиями прописать что надо менять?? такое же возможно, тока вот пока не нашел как так написать что б в лотусскрипте вызвать агент, да и еще при условии, т.е. если так то того агента, а если так то другого агента...подскажите плиз и я отстану с этим вопросом:blush:
0
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
07.12.2011, 10:07 52
Бред какой-то. Все прописывается. docOld.Document.GetItemValue({Field2})(0) - Может пусто возвращает? Может в docOld нет этого поля?

Агент это слишком...

про агента почитай в Help: NotesAgent class

Set notesAgent = notesDatabase.GetAgent( agentName$ )
status = notesAgent.Run( [ noteID$ ] )

noteID$ - NoteID документа, это НЕ unid.

конструкция условия:

If <условие> Then
<Действие>
Else
<Противодействие>
End If
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
07.12.2011, 12:38 53
ещё раз и медленно...
вот этот вариант от вашего, ничем не отличается (с т.з. "проблемы")

форму нового дока - прописать обязательно! - по ней и создаётся инмемори док, в кот. появляется поле (оно есть на форме) и в это поле, через uidoc, заносится значение

и всё работает, надо сделать, как написано, и закрыть топик!
0
0 / 0 / 0
Регистрация: 24.11.2011
Сообщений: 50
19.12.2011, 10:28 54
РАЗАБРАЛСЯ!!

Сделал следующим способом

Dim lstFields List As Variant

lstFields({Field1}) = {Field2}


Forall vl In lstFields
v = Evaluate(vl, doc)
If ( docMain.hasItem(Listtag(vl))) Then
Call docMain.RemoveItem(Listtag(vl))
End If
Call docMain.AppendItemValue(Listtag(vl), v)
End Forall

Там в общем проблема была в том что почему то программа не доходила до этого кода, поэтому этот способ и не работал, я искал другие, пришлось вырезать чуть кода и все получилось.
ВСЕМ ОГРОМНОЕ СПАСИБО!!!!
0
19.12.2011, 10:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.12.2011, 10:28
Помогаю со студенческими работами здесь

Вставка значения поля из подчиненной формы в другую подчиненную форму
Есть такая проблема. Есть форма, на ней расположены 3 вкладки. В каждой вкладке есть...

Передача значения поля (текст) из одной формы в другую форму Access
Здравствуйте! Подскажите, пожалуйста, как передать значения поля из одной формы в другую? ...

Перенос в другую форму
Добрый вечер! есть 2 формы. в первой проверяется условие и выставляется значение true or false...

Перенос в другую форму
Имеется база с формой номер 1, для дальнейшей работы с базой необходимо всю ее перенести в другую...


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

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

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