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

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

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

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

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

  • Автор темы Yakov
  • Дата начала
Y

Yakov

Здравствуйте.

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

Потребовалось создать отчет, содержащий около 50 таблиц, в каждой 6 столбцов и от 2 до 40-50 строк (всего около 800 строк).
Казалось бы ничего особенного, никакие известные ограничения не нарушены (см. и - 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
 
A

allex

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

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

Yakov

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

allex

Подскажи ка кустановить размер колонок
 
Y

Yakov

См. NotesRichTextItem.AppendTable и NotesRichTextParagraphStyle.RightMargin.

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

allex

Вот есть код
Внизу я выделил место где ошибка. Вчера всю башку сломал...но в чем дело так и не понял.
Какие будут соображения
Код:
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
 
Мы в соцсетях:

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