Lotus - Анилиз документа во вложении

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

SOFTOBZOR.ru

#1
Добрый день Лотусисты!

Интересную задачу я поставил сам себе для самообразования.
Есть к примеру Документ Word.doc - строгой формы.
Я этот документ прикрепляю к документу Лотус.
Может ли лотус анализировать сожержание этого документа, то есть проверять имеються ли те или иные записи.
Пример документа я прикрепил к этому топику.

У кого есть желание, давайте пообсуждаем как это реализуеться на практике.
 

Вложения

  • 24.5 КБ Просмотры: 136
G

Guest

#2
Можно сделать таблицу, а потом используя обращения к ней, разбирать текст.
Вот нашла примерчик в нете:

Код:
Следующее выражение вернет текст в первой ячейке третьей строки первой таблицы в активном документе Word (код на VBA):
strText = ActiveDocument.Tables(1).Rows(3).Cells(1).Range.Text 
Когда найдете нужную строку в таблице, используйте ее семейство Cells для обращения к ячейкам в этой строке.
 
S

SOFTOBZOR.ru

#3
Юлия спасибо, будем пробовать.
Только вот беда, почемуто перестала работать функция импорта экспорта в доке, раньше работала. Посмотрите профессиональным взглядом, где ошибка:

Код:
@Command([EditGotoField];"attach");
@Command( [FileImport] )
Код:
@Command([EditGotoField];"attach");
@Command([EditInsertFileAttachment])
Создано 2 HostPota и поле attach

Почему то при нажатии на HostPot ругеться что "Неудаеться выполнить указаную команду"
 
G

Guest

#4
Может док не находится в режиме редактирования? :)
Попробуй поставь, чтобы кнопки скрывались, когда док открыт в режиме просмотра.
 
G

Guest

#7
Это код на VBA и работает в Word.
Для Lotus его еще нужно переделать.

Во-первых нужно получить объект ворда из приаттаченного поля.

Dim emo As NotesEmbeddedObject
Set emo=doc.GetAttachment("Имя дока.doc")

Потом нужно как-то отрыть документ для редактирования.
Можно, например, его сохранить во временный файл.

Set wdApp = CreateObject("Word.Application")
Dim spath As String
spath="c:\Имя дока.doc"
Call emo.ExtractFile(spath)
wdApp.Visible=True
wdApp.Document.open(spath)

Потом делаем переменную для доступа к данным и с ее помощью рассматриваем и меняем док.

О! нашла ссылочку по теме:
http://www.notesnet.ru/notesnet.nsf/note/F...3256D56005D420D
 
S

SOFTOBZOR.ru

#8
Ага! с этим немножко понятно - спосибо многократно!.

А как получить значение определенного элемента в документе Word?
Например это документ с таблицей, вот я хочу проверить есть ли данные в ячейке 1.1 и получить эти данные.

Далее я планирую сделать вью, для теста, то есть что-то в роде того:
Все доки
- Доки с пустым значением
- Доки со значением
 
G

Guest

#9
что-то типа этого:

set strText = wdApp.Document.Tables(1).Rows(1).Cells(1).Range.Text
 
S

SOFTOBZOR.ru

#10
Не желает работать

Код:
Sub Click(Source As Button)
Dim emo As NotesEmbeddedObject
Set emo=doc.GetAttachment("lotus.doc")
Set wdApp = CreateObject("Word.Application")
Dim spath As String
spath="c:\lotus.doc"
Call emo.ExtractFile(spath)
wdApp.Visible=True
wdApp.Document.open(spath) 
Set strText = wdApp.Document.Tables(1).Rows(1).Cells(1).Range.Text
End Sub
Может у меня что-то с полем attach? упустил чти нибудь?
 
G

Guest

#12
doc не определен.
Скрипт не знает к какому ты именно doc обращаешься.

+ обшибка: надо все-таки не Document, а Documents :)
 
S

SOFTOBZOR.ru

#13
Меня еще смущает такой момент
Допустим есть 2 поля Вложения.
Что-тогда будет? Ведь в функции явно не указано, из какого поля получить данные.
И можно ли вместо lotus.doc использовать нечто переменное ("$FILE") ?
 
G

Guest

#14
Должна быть переменная типа стринг. См. help.

Вот такой код у меня работает и возвращает значение.

Код:
Sub Click(Source As Button)
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument	

'Ссылка на документ
Set uidoc = workspace.CurrentDocument
Set doc = uidoc.Document

Dim emo As NotesEmbeddedObject
Set emo=doc.GetAttachment("lotus.doc")
Set wdApp = CreateObject("Word.Application")
Dim spath As String
spath="c:\lotus.doc"
Call emo.ExtractFile(spath)
wdApp.Visible=True
wdApp.Documents.Open(spath)
If wdApp.ActiveDocument.Tables.Count >= 1 Then
strText = wdApp.ActiveDocument.Tables(1).Rows(1).Cells(1).Range.Text
Msgbox strText 
End If
End Sub
 
S

SOFTOBZOR.ru

#15
Юлия спасибо, если бы не вы... нифига бы не понял.
А реально програмно закрыть открытый док?
 
G

Guest

#16
Call wdApp.Quit

Можно и wdApp.Visible=True не делать, чтобы не смущать народ.
 
S

SOFTOBZOR.ru

#17
В этом случаи Приложение висит списке задачь, и ручками убивать нужно.
Вот вариант

Код:
Call wdApp.Application.Quit
Теперь мне понятно, за день разобрался :D
Будем изучать этот вопрос дальше.
Например как мне ипользовать то что вернеться в strText для ввода этого значения уже в лотус документ с кажим в поле [xxx] а не в MsgBox

Ну не буду надоедать, "поковыряюсь" сам... а уж если совсем в тупик зайду.
Буду Юлия опять вам "надоедать", а если серьезно, огромное Вам человеческое спасибо!, Просто уважаю людей которые с охотой деляться своими знаниями. Сам такой но в MySQL / PHP ;)
 
G

Guest

#18
А я MySQL / PHP знаю совсем чуть-чуть (пару сайтов сделала), но хочу поразбираться. :D
А чего ты в Lotus с ПХП перешел? Я вот думаю куда-нить смениться, а то на Лотусе не могу вакансию найти подходящую. Мало лотусников по Минску требуется. ;)
 
S

SOFTOBZOR.ru

#19
Ну PHP и MySQL это увлечение с раннего детства, наделал кучу сайтов для знакомых да и для себя. Тут ни какого обязательста, сам себе на уме.. ковырялся, ковырялся ну теперь как говориться нет непосильных задач.

Вот лотус другое дело, вакансия появилась, и есть желание заниматься именно этой работой, при чем желание "жгучие" (хорошая комманда, дружный коллектив). Пока изучаю для себя, то есть до практики еще месяцев 5, вот к тому времени охото иметь представление что к чему.

У нас будет БОСС-Референт, как бы написаная (готовая) система, но я по натуре такой хочу знать все... как это "фунциклирует".
 
G

Guest

#20
Да, разбираться в Лотусе интересно. Много возможностей и нюансов.
Еще бы задач найти и место, где можно программить в тихой, спокойной обстановке... :D
 
Статус
Закрыто для дальнейших ответов.