• Paranoid - курс по анонимности и безопасности в сети от команды codeby. Защита персональных данных, анонимность в сети интернет, настройка виртуальных машин, безопасная передача данных, анти форензика и еще много всего полезного. Подробнее ...

Импорт значений документов в таблицу Rt поля

  • Автор темы allex
  • Дата начала
A

allex

#1
Действие вешается в представлении для импорта файла Excel в Lotus
Значения из документов представления "body_f2" из примера импортируются в сгенерированную скриптом табличку, где колличество вкладок вычисляется динамически, в зависимости от количества документов в представлении,а использование стиля позволяем изменять размеры колонок

Код:
Sub Click(Source As Button)

Dim val_List( 1 To 200 ) As Variant ' колличество шагов исполнеия цыкла
Dim current_val As Variant
counter% = 1
Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase
REM Create document with Body rich text item
Dim doc As New NotesDocument(db)
Dim view_doc As NotesDocument
Call doc.ReplaceItemValue("Form", "body_rt_f2") ' название формы отчета по этой форме (в ней же содержится RT поле в котором создается таблица со вкладками)
Dim body As New NotesRichTextItem(doc, "body_rt")
Set view = db.GetView("body_f2")

REM Create table in Body item
rowCount% = 16 'колличество строк в таблице каждой из вкладок
columnCount% = 7 'колличество столбцов в таблице каждой из вкладок
a = view.EntryCount ' число документов в представлении (строки)
'c = a+12
'b = Fix(c/rowCount%) ' число вкладок
b = Fix(a/rowCount%) ' число вкладок
b1 = Fix(a/rowCount%) ' число вкладок
b2 = a/rowCount%

If b1< b2 Then b=b1 +1

Dim tabs() As String
If Messagebox("Продолжить создание таблицы?", _
MB_YESNO + MB_ICONQUESTION, "Tabbed?") = IDNO Then
Call body.AppendTable(b, 1)
Else
Redim tabs(1 To b)
For i = 1 To b
tabs(i) = "Стр № " & i
Next
Call body.AppendTable(b, 1, tabs) 'создание таблицы с вкладками

End If
REM Populate table
Dim rtnav As NotesRichTextNavigator
Set rtnav = body.CreateNavigator
Call rtnav.FindFirstElement(RTELEM_TYPE_TABLE)'
Set view_doc = view.GetFirstDocument 
Call rtnav.FindNextElement(RTELEM_TYPE_TABLECELL) 'поиск ячейки в 1 вкладке
' вставка таблицы 7х15
'****************************************** стиль оформления
Dim columnStyles1(0 To 6) As NotesRichTextParagraphStyle
For i = 0 To 6
Set columnStyles1(i) = session.CreateRichTextParagraphStyle
columnStyles1(i).LeftMargin = 0 ' position relative to cell border.
columnStyles1(i).FirstLineLeftMargin = 0
Next
columnStyles1(0).RightMargin = 4.5 * RULER_ONE_CENTIMETER
columnStyles1(0).Alignment = ALIGN_CENTER
columnStyles1(1).RightMargin = 17. * RULER_ONE_CENTIMETER
columnStyles1(1).Alignment = ALIGN_LEFT
columnStyles1(2).RightMargin = 2. * RULER_ONE_CENTIMETER
columnStyles1(2).Alignment = ALIGN_CENTER
columnStyles1(3).RightMargin = 1.5 * RULER_ONE_CENTIMETER
columnStyles1(3).Alignment = ALIGN_CENTER
columnStyles1(4).RightMargin = 1.5 * RULER_ONE_CENTIMETER
columnStyles1(4).Alignment = ALIGN_CENTER
columnStyles1(5).RightMargin = 1.5 * RULER_ONE_CENTIMETER
columnStyles1(5).Alignment = ALIGN_CENTER
columnStyles1(6).RightMargin = 1.5 * RULER_ONE_CENTIMETER
columnStyles1(6).Alignment = ALIGN_CENTER
'*********************************************
For ib = 1 To b Step 1
Call body.BeginInsert(rtnav)															
Call body.AppendTable(rowCount%, columnCount%,,,columnStyles1)
'Call body.AppendTable(16, 7,,,columnStyles1)
Call body.EndInsert
Call rtnav.FindNextElement(RTELEM_TYPE_TABLECELL) 'поиск ячейки во вложенной таблице 1 вкладки

For iRow% = 1 To rowCount% Step 1
If view_doc.Size = 0 Goto savedoc
On Error Goto savedoc

Call body.BeginInsert(rtnav)
Call body.AppendText(view_doc.ColumnValues( 0 ))
Call body.EndInsert
Call rtnav.FindNextElement(RTELEM_TYPE_TABLECELL)
Call body.BeginInsert(rtnav)
Call body.AppendText(view_doc.ColumnValues( 1 ))
Call body.EndInsert
Call rtnav.FindNextElement(RTELEM_TYPE_TABLECELL)
Call body.BeginInsert(rtnav)
Call body.AppendText(view_doc.ColumnValues( 2 ))
'On Error=19 Goto savedoc
Call body.EndInsert
Call rtnav.FindNextElement(RTELEM_TYPE_TABLECELL)
Call body.BeginInsert(rtnav)
Call body.AppendText(view_doc.ColumnValues( 3 ))
Call body.EndInsert
Call rtnav.FindNextElement(RTELEM_TYPE_TABLECELL)
Call body.BeginInsert(rtnav)
Call body.AppendText(view_doc.ColumnValues( 4 ))
Call body.EndInsert
Call rtnav.FindNextElement(RTELEM_TYPE_TABLECELL)
Call body.BeginInsert(rtnav)
Call body.AppendText(view_doc.ColumnValues( 5 ))
Call body.EndInsert
Call rtnav.FindNextElement(RTELEM_TYPE_TABLECELL)
Call body.BeginInsert(rtnav)
Dim v6 As String
v6$ = Left$(view_doc.ColumnValues( 6 ), 6)
Call body.AppendText(v6$)
val_List( counter% ) = current_val
Set view_doc = view.GetNextDocument( view_doc )
counter% = counter% + 1			

Call body.EndInsert
If current_val > a Goto savedoc
Call rtnav.FindNextElement(RTELEM_TYPE_TABLECELL)
Next
Next
'Exit Sub
savedoc:

REM Save document and refresh view
Call doc.Save(True, False)
Dim ws As New NotesUIWorkspace
Call ws.ViewRefresh
Exit Sub

End Sub