Взять строку в Richtext поле

Тема в разделе "Lotus - Программирование", создана пользователем Dragon108, 21 июл 2010.

  1. Dragon108

    Dragon108 Well-Known Member

    Регистрация:
    19 янв 2010
    Сообщения:
    264
    Симпатии:
    0
    Есть поле Richtext , в нем надо найти строку, и взять следующие 10 символов идущие после нее в поле. Какие есть функции и как можно реализовать?
    Заранее Спасибо.
     
  2. alik86

    alik86 Lotus team
    Lotus team

    Регистрация:
    20 ноя 2008
    Сообщения:
    465
    Симпатии:
    0
    Открываете в хелпе NotesRichTextItem class и смотрите - там Вы найдете GetFormattedText method и еще много интересного... ;)
     
  3. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.083
    Симпатии:
    300
    есть ещё РТнафигатор, но он глючен...
     
  4. Dragon108

    Dragon108 Well-Known Member

    Регистрация:
    19 янв 2010
    Сообщения:
    264
    Симпатии:
    0
    Целиком задача звучала так:
    Есть поле рич текст , в нем есть строчка "Дата рождения <dd.mm.yyyy>". Необходимо было найти эту строчку и взять только <dd.mm.yyyy> и записать данное значение в поле Дата рождения(birthday_edit) в документе.

    Придумал следующее решение. Написал следующего агента:

    Код (LotusScript):
    'Агент: Берется поле рич текст, ищется в нем информацию и сохраняется в поле с типом дата (предварительно преобразовываются данные)
    '1) Берет все выделенные документы, и по очереди обрабатывает их
    '2) В каждом выделенном документе берет поле Рич текст и записывает ее в строковую переменную
    '3) Разбивает данную строковую переменную на элементы массива и соответственно загоняет все в массив
    '4) Ищет по полученному массиву слово Дата и возвращает индекс данного элемента
    '5) Прибавляет к индексу данного элемента 2, (полученный индекс будет являться индексом даты (числа))
    '6) Берет по данному индексу элемент из массива, удаляет у данного элемента символы переноса строки в начале и конце элемента
    '7) Записывает полученную даты в поле Дата Рождения и сохраняет документ

    Sub Initialize

    'Обработчик ошибок
    On Error Goto errorhandler

    Dim ws As NotesUIWorkspace
    Dim uiview As NotesUiView
    Dim ses As Notessession
    Dim db As NotesDatabase, mailDb As NotesDatabase   
    Dim coll As NotesDocumentCollection
    Dim doc As NotesDocument, mailDoc As NotesDocument

    'Счетчик
    Dim i%

    'Переменные полей
    Dim item3 As NotesRichTextItem
    Dim item4 As NotesItem


    'Массив строк для разбияния и сохранения в нем текста из поля рич текст
    Dim ret As Variant

    'Индекс элемента Дата в массиве
    Dim nash_result As Variant
    'Индекс самой даты в массиве
    Dim nash_result_1 As Variant
    'Переменная для хранения полученной даты
    Dim temp As String

    Set ws = New NotesUIWorkspace  
    Set uiview = ws.CurrentView
    Set coll = uiview.Documents

    'Для каждого отмеченного документа выполянет действия
    If coll.Count > 0 Then 
    For i%=1 To coll.Count
    Set doc = coll.GetNthDocument(i%)

    'Берет поле Рич текст
    Set item3 = doc.GetFirstItem( "Body" )

    'Записывает весь текст из поля рич текст с строковую переменную
    plainText$ = item3.GetFormattedText( True, 10 )

    'Разбивает текстовую переменную на элементы массива
    ret = Split (plainText$, , -1, 0)

    'Убирает у элементов пробелы (на свякий случай)
    ret = Fulltrim (ret)

    'Получает индекс элемента (слова Дата) в массиве строк
    nash_result = Arraygetindex( ret, "Дата" ,0 )

    'Прибавляет к полученному индексу 2, таким образом получаем индекс даты рождения (цифры)
    nash_result_1 = nash_result + 2

    'Сохраняем дату рождения в переменную temp
    temp = ret(nash_result_1)

    'Удаляем лишние переносы строки (спереди и сздаи нашей даты, дата- 10 символов)
    temp = Left(temp, 12)
    temp = Right(temp, 10)

    'Записываем полученную даты в поле Дата рождения
    Set item4 = doc.ReplaceItemValue("birthday_edit", temp)

    Call doc.Save( True, True )

    Next       
    Else
    Msgbox "Выберите документы"
    End If



    errorhandler:
    If Err <> False Then
    Msgbox "Ошибка: " +Error$ + Chr(10) + " Код ошибки: " + Cstr(Err) + Chr(10) + "Строка ошибки: "+ Cstr(Erl)+ Chr(10) + "Передайте эту информацию разработчику.", 0 +16, "Ошибка"
    Exit Sub
    End If


    End Sub


    Вот как то так. А вдруг кому нить пригодиться :)
     
  5. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    Не будет работать если Body станет достаточно большим.
    Что будет если не окажется слова "Дата"?
    Коллекцию лучше перебирать через coll.getNextDocument.
     
  6. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    Попробуйте прочитать это вслух:
    Рекомендую к еженедельному прочтению по пятницам:
     
Загрузка...
Похожие Темы - Взять строку Richtext
  1. iivvnn
    Ответов:
    4
    Просмотров:
    1.812
  2. student55
    Ответов:
    0
    Просмотров:
    1.911
  3. San40S
    Ответов:
    5
    Просмотров:
    3.072
  4. ToxaRat
    Ответов:
    3
    Просмотров:
    2.293
  5. phantom76
    Ответов:
    7
    Просмотров:
    3.714

Поделиться этой страницей