вытяжка данных из аутлука в лотус

  • Автор темы oxystile
  • Дата начала
O

oxystile

#1
в аутлуке расположены документы на основе формы созданной в конструкторе(документы расположены на пути общие папки/все общие папки/....)
хотелось бы экспортировать все эти документы в БД лотуса, форма в лотусе идентична по виду атлушной, единственное что имена полей не совпадают

предполагаю, что у же кто-то сталкивался с самой задачкой, буду благодарна за код и советы как это реализовать
 
R

Ronchik

#2
создай в локальной адресной книжке акаунты на инет почту и ничего не придеться вытаскивать mail будет приходить прямо на лотус
 
O

oxystile

#3
нет, я не про почту
Один проект ведет в аутлуке свою разработку, с почтой не связано.
формы содержат набор поей: №, тема сообщения, заметки...
в общей папке аутлука размещено порядка 3-х тысяч таких документов.
Хотим разрабоку вести в лотусе, но прежде надо перетащить уже созданные разработки в аутлуке в лотус
 

morpheus

скриптописец
07.08.2006
3 915
1
#4
Для: oxystile
А может Вам Domino Access for Outlook поможет? или не то опять?
 
O

oxystile

#6
Domino Access for Outlook вроде не то....
а вот с OLE хотелось бы примерчик, может кто такое уже писал
 
R

Ronchik

#7
Точно так-же как с Ex или Word только объект создаешь "OutLook.Application" и потом в любой скриптовой библиотеке на закладке Referens найдешь все то что касаемо этого объекта
 
O

oxystile

#10
вроде как получается....но не могу взять в аутлуке элемент, кот. содержит вложение
Set appOutlook = GetObject(, "Outlook.Application")
Set nms = appOutlook.GetNamespace("MAPI")
Set fld = nms.PickFolder
lngCount = fld.Items.Count
For i = 1 To lngCount' цикл по всем записям в папке
Set item = fld.Items.Item(i)
Set docNew = db.CreateDocument
ss2=item.FullName ' это текстовое поле, его получила
docNew.NameFirst=ss2 'получилось

есть поле NotesName в нем лежит тект. файл,
как обратиться к этому полю?
 
R

Ronchik

#11
см. ItemProperty дальше через Value as Variant....по идее должно вернуть значение любого поля
 
O

oxystile

#12
вообщем что-то нашла, но все еще не то...
Set vAttach = item.Attachments - получаю вообще все вложения, ну, и ладно, все равно они все должно загнаться в одно поле
kol_attach=item.Attachments.Count -кол-во

потом можно сделать цикл по ним:
For j=1 To kol_attach
'Set Attach=item.Attachments(j)
'Next
т.о. я их все уже получила, но как теперь их еще и поместить в поле docNew.Attach на форме лотуса?
 
R

Ronchik

#13
Код:
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim rtitem As NotesRichTextItem
Dim object As NotesEmbeddedObject
Set db = session.CurrentDatabase
Set doc = New NotesDocument( db )
Set rtitem = New NotesRichTextItem( doc, "Body" )
Set object = rtitem.EmbedObject _
( EMBED_OBJECT, "", "c:\jim.sam")
doc.Form = "Main Topic"
doc.Subject = _
"Here's Jim's document, as an embedded object"
Call doc.Save( True, True )
см. в хелпе дотуса NotesRichTextItem
 
O

oxystile

#14
да, это превым делом использовала
вместо Set object = rtitem.EmbedObject _
( EMBED_OBJECT, "", "c:\jim.sam")

написано
Set vAttach =item.Attachments(1) - получил тип object
Set object = rtitem.EmbedObject ( EMBED_ATTACHMENT, "", vAttach) - тут возвращена ошибка:)

беда как раз и в том состоит, что получается надо скопировать объект vAttach на винт
а потом Set object = rtitem.EmbedObject ( EMBED_ATTACHMENT, "", "путь+имя") -но ведь это ерунда:(
 
R

Ronchik

#15
Зачем такие сложности
вот пример копирования из одного поля RT в другое
Код:
Sub Click(Source As Button)
Dim w As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim docA As NotesDocument
Dim rtitemA As Variant
Dim rtitemB As Variant
Set uidoc = w.CurrentDocument
Set docA = uidoc.Document
Call uidoc.Save
Set rtitemA = docA.GetFirstItem( "Body" )
Set rtitemB = docA.GetFirstItem( "Body1" )
If ( rtitemA.Type = RICHTEXT And _
rtitemB.Type = RICHTEXT ) Then
Call rtitemA.AddNewLine(1)
Call rtitemA.AppendRTItem( rtitemB )
docA.body1 = " "
docA.SaveOptions = "0"
Call docA.Save(False, True)
Call uidoc.Close
End IF
End Sub
 
O

oxystile

#16
этот пример работает, когда Set rtitemA берется из лотус документа
а тут я пытаюсь установить Set rtitemB -вложение из аутлука
в дебаггере смотрю напротив rtitemB -записано тип: object, и все больше никахи данных по нему.

а код выше на строке if rtitemB.Type = RICHTEXT и ниже соответсвенно Call rtitemA.AppendRTItem( rtitemB ) -возращает ошибку
 
V

velitchestvo

#17
попробуй так, может получиться:

Sub Click(Source As Button)
Dim w As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim docA As NotesDocument
Dim rtitemA As Variant
Dim rtitemB As Variant
Set uidoc = w.CurrentDocument
Set docA = uidoc.Document
Call uidoc.Save(True,True)
Set rtitemA = docA.GetFirstItem( "Body" )
Set rtitemB = docA.GetFirstItem( "Body1" )
If ( rtitemA.Type = RICHTEXT And _
rtitemB.Type = RICHTEXT ) Then
Call rtitemA.AddNewLine(1)
Call rtitemA.AppendRTItem( rtitemB )
docA.body1 = " "
docA.SaveOptions = "0"
Call docA.Save(False, True)
Call uidoc.Close
End IF
End Sub
 
R

Ronchik

#18
<!--QuoteBegin-oxystile+25:05:2007, 11:11 -->
<span class="vbquote">(oxystile @ 25:05:2007, 11:11 )</span><!--QuoteEBegin-->а код выше на строке if rtitemB.Type = RICHTEXT и ниже соответсвенно Call rtitemA.AppendRTItem( rtitemB ) -возращает ошибку
[snapback]67089" rel="nofollow" target="_blank[/snapback]​
[/quote]
Вот эта проверка if rtitemB.Type = RICHTEXT не верна т.к. переменная rtitemB береться не из лотуса
 
O

oxystile

#19
<<<Вот эта проверка if rtitemB.Type = RICHTEXT не верна>>>
так в том то и дело, т.к. rtitemB.Type =object (см. в дебаггере)
так неужели и вправду единственный выход-это сохранять предварительно вложения из аутлука на жестком диске а потом из жесткого диска в лотусе??? :)