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

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

oleg7

#1
помогите
есть кнопка:
я сохраняю письмо на локальную машину:
Код:
	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 805
21
#4
Гы... а какие именно строки надо?
Берешь нужное поле... ищешь в нем то что тебе надо.. а потом записываешь
Call strm.WriteText( то что тебе надо , EOL_CRLF)
 

nvyush

Lotus team
22.04.2009
2 317
0
#5
Код:
	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

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

nvyush

Lotus team
22.04.2009
2 317
0
#7
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
6 571
263
#8
nvy почему бы не выгрузить всю коллекцию - и её парсить, а не каждый док?
 

nvyush

Lotus team
22.04.2009
2 317
0
#9
lmike
От задачи зависит. Если коллекция большая, может в памяти не уместиться.
 

NickProstoNick

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

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