DXL: экспорт части документа

  • Автор темы oleg7
  • Дата начала
Статус
Закрыто для дальнейших ответов.
O

oleg7

помогите
есть кнопка:
я сохраняю письмо на локальную машину:
Код:
	Dim session As New NotesSession
Dim db As NotesDatabase
Dim strm As NotesStream
Dim doc As NotesDocument
Dim col As Notesdocumentcollection
Dim i As Integer
Dim ex As NotesDXLExporter
i = 0
Set db = session.CurrentDatabase
Set col=db.UnprocessedDocuments
Set doc = col.GetFirstDocument
While i < db.UnprocessedDocuments.Count
name="C:\text\1" & ".txt"
Call strm.Open(name)
Call strm.Truncate
Set ex = session.CreateDXLExporter(doc ,strm)
i = i + 1
Call ex.Process
Call strm.Close
Set doc=col.GetNextDocument(doc)
Wend
документ сохранен. А как его перенести не весь, а лишь несколько определенных строк?
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
Гы... а какие именно строки надо?
Берешь нужное поле... ищешь в нем то что тебе надо.. а потом записываешь
Call strm.WriteText( то что тебе надо , EOL_CRLF)
 
N

nvyush

Код:
	Dim session As New NotesSession
Dim db As NotesDatabase
Dim strm As NotesStream
Dim doc As NotesDocument
Dim col As Notesdocumentcollection
Dim DXLExporter As NotesDXLExporter
Dim XSLTransformer As NotesXSLTransformer
Dim ssheet As NotesStream
Set db = session.CurrentDatabase
Set col = db.UnprocessedDocuments
Set ssheet = ThisSession.CreateStream()
Call ssheet.Open("xsl_Name")
Set DXLExporter = session.CreateDXLExporter()
Set XSLTransformer = session.CreateXSLTransformer()
Call XSLTransformer.SetStylesheet(ssheet)
Call XSLTransformer.SetInput(DXLExporter)
Set doc = col.GetFirstDocument
Do Until doc Is Nothing
name="C:\text\" & doc.UniversalID & ".txt"
Call strm.Open(name)
Call strm.Truncate
Call DXLExporter.SetInput(doc)
Call XSLTransformer.SetOutput(strm)				
DXLExporter.Process
Call strm.Close
Set doc = col.GetNextDocument(doc)
Loop
 
O

oleg7

nvy
спасибо большое за предоставленный код, сохраняется на комп документ
Но все же так и не справилься...
как можно не весь документ сохранять, а только например ФИО, того кто отправил, Тему сообщения, и т.д...
Код:
		file="C:\test\Docum" & ".txt"
Call strm.Open(file)
' если правильно понимаю, то здесь надо из doc взять Subject	и SendTO			
Call strm.Truncate
а как потом вообще надо указать, что не все записать в документ, а только взятые части из doc?
 
N

nvyush

Call ssheet.Open("xsl_Name") - здесь открывается файл xsl-преобразования. В принципе можно взять и из настроечного документа (да откуда угодно). Учите/гуглите xsl. На затравку:
Код:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ldn="http://www.lotus.com/dxl">
<xsl:output method="html"/>
<xsl:template match="/">
<xsl:element name="tr">
<xsl:element name="td">
<xsl:value-of select="//ldn:item[@name='Form']"/>
</xsl:element>
<xsl:element name="td">
<xsl:value-of select="//ldn:item[@name='$ConflictAction']"/>
</xsl:element>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
470
nvy почему бы не выгрузить всю коллекцию - и её парсить, а не каждый док?
 
N

nvyush

lmike
От задачи зависит. Если коллекция большая, может в памяти не уместиться.
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
nvy
спасибо большое за предоставленный код, сохраняется на комп документ
Но все же так и не справилься...
как можно не весь документ сохранять, а только например ФИО, того кто отправил, Тему сообщения, и т.д...
Код:
		file="C:\test\Docum" & ".txt"
Call strm.Open(file)
' если правильно понимаю, то здесь надо из doc взять Subject	и SendTO			
Call strm.Truncate
а как потом вообще надо указать, что не все записать в документ, а только взятые части из doc?
Ну да... берешь значение поля/полей собираешь в строку и записываешь

Добавлено: lmike, nvy
Не понимаю... зачем такие сложности?
Или по вашему возиться с xml, который может не работать на всех машинах (зависит конечно от задачи), писать xsl-шаблон... потом перебирать результат (если вдруг понадобится) проще чем перебирать доки и сразу записывать то что надо? :what?:
 
A

azat20

Set exporter = session.CreateDXLExporter
exporter.RestrictToItemNames = "Subject"
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

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