1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программировании. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление

Об ограничениях полей Rich Text, связанных с таблицами

Тема в разделе "Lotus - Программирование", создана пользователем Yakov, 13 фев 2007.

  1. Yakov

    Yakov Гость

    Репутация:
    0
    Здравствуйте.

    Вероятно, мной найдено некое магическое число, ограничивающее количество ячеек в одном RichText поле.

    Потребовалось создать отчет, содержащий около 50 таблиц, в каждой 6 столбцов и от 2 до 40-50 строк (всего около 800 строк).
    Казалось бы ничего особенного, никакие известные ограничения не нарушены (см. Known limitations of Notes and Domino 6.x и Known limitations of Notes and Domino 7.x - 64 столбца и 255 строк в одной таблице). Но при создании этого отчета возникала одна из следующих ошибок: 263 "Insufficient memory.", 4412 "User-defined error", 4412 "Maximun number of memory segments that Notes can support has been exceeded".

    Тогда я поставил два небольших эксперимента.

    1. Создаются таблицы, ячейки которых пусты.
    Создавалось от 1 до 200 таблиц с количеством столбцов 10 - 64 и строк 15 - 255.
    Когда общее количество ячеек во всех таблицах превышало 34000, Lotus ругался следующим образом: "Document has too many paragraphs - it must be split into several documents".

    2. Создаются таблицы с заполненными ячейками.
    Создавалось от 1 до 46 таблиц с количеством столбцов от 4 до 64 и строк от 10 до 88.
    Ошибки "User-defined error" и "Maximun number of memory segments that Notes can support has been exceeded" возникали при количестве ячеек более 3200.
    Результат не зависел от количества помещаемых в ячейку символов.

    Lotus Domino 6.5.1
    Lotus Notes 6.5.4
     
  2. allex

    allex Гость

    Репутация:
    0
    Я щас тоже с такой же проблемой столкнулся...
    Тут нужно находить золотую середину на колличество столбцов и строк.
    Я вот решил сделать такой финт: создавать табы (они будут страницами),а в табах создавать таблицу.
    В моем случае нужноа таблица 7 столбцов и не меньше 95 строк.

    Давай вместе решим эту проблемку
     
  3. Yakov

    Yakov Гость

    Репутация:
    0
    Я сделал очень просто. Отчет - документ с одним rich text полем. Считаю количество вставленных в поле ячеек. Если оно превышает 3000, то следующая таблица будет вставлена в новый документ. Отчеты "одноразовые", нигде не сохраняются. Пользователь посмотрел, воспользовался информацией, закрыл документ. В следующий раз сгенерирует снова.
     
  4. allex

    allex Гость

    Репутация:
    0
    Подскажи ка кустановить размер колонок
     
  5. Yakov

    Yakov Гость

    Репутация:
    0
    См. NotesRichTextItem.AppendTable и NotesRichTextParagraphStyle.RightMargin.

    Как только найду время и приведу в порядок свою библиотечку для работы с таблицами, так сразу ее выложу.
     
  6. allex

    allex Гость

    Репутация:
    0
    Вот есть код
    Внизу я выделил место где ошибка. Вчера всю башку сломал...но в чем дело так и не понял.
    Какие будут соображения
    Код:
    Dim val_List( 1 To 120 ) As Variant
    Dim current_val As Variant
    counter% = 1
    
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Set db = session.CurrentDatabase
    REM Create new document with rich text item
    Dim doc As New NotesDocument(db)
    
    Call doc.ReplaceItemValue("Form", "body_rt")
    Call doc.ReplaceItemValue("subject", "__Table__1")
    Dim rti As New NotesRichTextItem(doc, "body_rt")
    Call rti.AppendText("Paragraph of text")
    Call rti.AddNewLine(2)
    
    Set view = db.GetView("body")
    
    REM Create a table
    Dim rows As Integer, columns As Integer, a As Integer, b As Integer
    rows = 7
    columns= 15
    'rows = view.RowLines
    a=view.EntryCount
    b = Fix(a/columns)
    
    Dim tabs() As String
    If Messagebox("Do you want a tabbed table?", _
    MB_YESNO + MB_ICONQUESTION, "Tabbed?") = IDNO Then
    Call rti.AppendTable(rows, columns)
    Else
    Redim tabs(1 To b)
    For i = 1 To b
    tabs(i) = "Row " & i
    Next
    Call rti.AppendTable(rows, 1, tabs) 'вот в этом месте вылетает ошибка примерно такого содержания "Illegal number in string array"
    
    End If
     
  7. allex

    allex Гость

    Репутация:
    0
    задачка решилась
     
Загрузка...

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