• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Добавление нового значения в Rich Text

seoman2

Green Team
17.02.2010
506
1
BIT
58
Можно ли добавлять в Rich text поле новое значение, как в массив или множественное поле?
 
A

alik86

Можно! В дизайнерском хелпе находите NotesRichTextItem class, а там пред Вами предстанут всякие AppendText'ы и ему подобные вещи.
 

seoman2

Green Team
17.02.2010
506
1
BIT
58
Проблема вот в чем, при выполнении

Dim RTItm As NotesRichTextItem
Set RTItm=CurDoc.getFirstItem("ИСТОРИЯ")
Call RTItm.Appendtext (formul$)

Создается 2 поля ИСТОРИЯ !
Одно пустое, а во второе как и надо добавляется значение formul$.
 

leiba

Well-known member
18.06.2010
49
0
BIT
3
А документ открыт на редактирование, поле "ИСТОРИЯ" редактируемое, так?
 
A

alik86

Ща няма часу. Вот Вам на затравку рабочий код (по-моему рабочий ;)):
Код:
Sub AppendToRTitem(RTitem As NotesRichTextItem, text As String)
'---------------------------------------------------------------------------------------------------------------------------------------------	
' Процедура динамического добавления текста в поле Rich Text 
'RTitem - поле RTitem, text - текст, который добавляется
'!обращаться после того как в доке сделаны все необходимые изменения (после Doc.Save), чтобы не было конфликтов
'---------------------------------------------------------------------------------------------------------------------------------------------
Dim Wsp As New NotesUIWorkspace
Dim DocUI As NotesUIDocument
Dim Doc As NotesDocument

Set DocUI = Wsp.CurrentDocument
DocUI.Save
DocUI.AutoReload = False
Set Doc = DocUI.Document
Call Doc.Save(True, False)
Call RTitem.AppendText(text)
Call RTitem.AddNewline(1)

Call Doc.Save( True, False )
Doc.SaveOptions = "3"
Call DocUI.Close
Call Wsp.EditDocument(True, Doc)
DocUI.AutoReload = True		
End Sub
 

seoman2

Green Team
17.02.2010
506
1
BIT
58
А документ открыт на редактирование, поле "ИСТОРИЯ" редактируемое, так?
Поле история вычисляемое. Само на себя.

alik86, у меня примерно такой же код, но всё равно 2 поля создается!
Вот сделал в тестовой базе:
Sub Click(Source As Button)
Dim Wsp As New NotesUIWorkspace
Dim DocUI As NotesUIDocument
Dim Doc As NotesDocument
Dim RTitem As NotesRichTextItem
Set DocUI = Wsp.CurrentDocument
DocUI.Save
DocUI.AutoReload = False
Set Doc = DocUI.Document
Call Doc.Save(True, False)
Set RTitem = Doc.GetFirstItem("История")
Call RTitem.AppendText(" 123123123 ")
Call RTitem.AddNewline(1)

Call Doc.Save( True, False )
Doc.SaveOptions = "3"
Call DocUI.Close
Call Wsp.EditDocument(True, Doc)
DocUI.AutoReload = True
End Sub
И все равно 2 поля история создается!

Разобрался, в 7.0.2. - создается 2 поля RichText.
А в 8.5 - все правильно, 1 поле.
 
H

hosm

А зачем надо делать 1-й Call Doc.Save(True, False) после DocUI.Save?
 
A

alik86

А зачем надо делать 1-й Call Doc.Save(True, False) после DocUI.Save?
А я уже не помню - методом тыка до этого доходил... :)
Вспомнил :):
Там были косяки с созданием конфликтов (см. "!обращаться после того как в доке сделаны все необходимые изменения (после Doc.Save), чтобы не было конфликтов"). Вот в процессе написания и отладки процедуры и сохранял принудительно, а апосля не убрал.
Т.о. ответ: если процедура вызывается после Doc.Save, то не надо.
И все равно 2 поля история создается!
Это нормально (а может не совсем, но и у меня так) - это дубликаты одного поля. Вся инфа отражается в РТфилде "История", который вы всунули в вашу форму...
 
Мы в соцсетях:

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