2013-09-03 5 views
1

Я пытаюсь экспортировать элементы из моей базы данных доступа в примечания лотоса. Документ, который я пытаюсь экспортировать, является стационарным и содержит все данные, записанные в него, мне просто нужно как-то пометить заполнители, а затем обновить значения. Я прочитал документацию и, кажется, мне нужно будет обратиться поля, а затем вызвать метод, чтобы заменить текст следующим образом:создание полей в документе Lotus Notes?

'where body is the field and the following string is what to replace field with 
Call doc.ReplaceItemValue("body", "REPLACE BODY") 

Чтобы быть ясно, весь мой код выглядит следующим образом:

Set session = CreateObject("Notes.NotesSession") 
Set maildb = session.GetDatabase("server", "mail\box.nsf") 

Set View = maildb.GetView("Stationery") 
Set entries = View.AllEntries 

Set entry = entries.GetFirstEntry 

Set doc = entry.Document 

Call doc.ReplaceItemValue("Subject", "Report - " & Date) 
'add code here 
Call doc.send(False, "[email protected]") 


End Sub 

Я заметил, что, просматривая документацию, кажется, есть возможность создавать поля, а затем адресовать эти поля для обновления значений. Так, например, если у меня есть поле с именем $ COST, то можно было бы сделать:

Call doc.ReplaceItemValue("$COST", "The cost is $3000") 

И это поле должно быть обновлено, чтобы отразить значение я прошел через метод. Моя большая проблема заключается в том, что даже просматривая документацию, я не могу понять, куда мне нужно добавить свои собственные поля. Похоже, что в документации предполагается, что вы знаете, как создавать эти поля и просто обращаться к ним. Или я должен только создавать эти поля программно, а затем заполнять данные? Мой клиент - Lotus Notes 8. Спасибо!

+0

Я бы рекомендовал не начинать имена полей с помощью знака $, есть некоторые зарезервированные системные поля, которые начинаются с этого символа, так что это путает других разработчиков, которые будут работать с вашим кодом. Это просто установленное соглашение не использовать этот символ в именах полей. Кроме того, для полей с расширенным текстом (например, поля вашего тела) есть богатые текстовые классы, которые дают вам гораздо лучший контроль над изображением содержимого, например, показывает Кнут в его ответе. –

ответ

1

Да, это круто в базах данных IBM Lotus Notes: вы можете поместить элементы (= поля) в документ Notes без предварительного определения полей.

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

Другой вопрос, конечно же, определить поля в форме, чтобы созданные элементы были видны пользователю, не глядя на окно свойств документа. Откройте базу данных в Designer и поместите поля в нужное положение и размер.

Ваш вопрос и комментарии, говорящие о том, что вы хотите создать документ, заполнить его данными и отправить его пользователям.

Если у всех пользователей есть доступ к вашему серверу Notes, вы можете создать этот документ в своей существующей базе данных и отправить пользователям только ссылку. Таким образом, вы можете создать хорошую форму и разместить все поля данных. Пользователи получат доступ к документу в базе данных по ссылке.

Альтернативой является создание красивого HTML-файла, прикрепление его к почте и отправка его. В этом случае необходимо добавить этот код в ваш пример на 'add code here:

Call doc.RemoveItem("Body") 
Set rtitem = doc.CreateRichTextItem("Body") 
Call rtitem.AppendText("your mail text") 
Call rtitem.EmbedObject(EMBED_ATTACHMENT, "", "report.html") 
+0

Есть ли способ добавить поля в мой текущий документ заметок в пользовательском интерфейсе? Или, как вы думаете, я должен решить свою проблему? Создайте новый документ и программно добавьте кучу настраиваемых полей, затем сохраните его и используйте? Прямо сейчас я нахожусь в замене тела rtf, но есть более простой способ нет? Или, как я могу «Поместить» мои поля в тело документа? –

+0

Является ли цель отправить электронное письмо с вашими данными кому-то «за пределами» Notes? –

+0

Нет, моя цель - отправить электронное письмо в предопределенную группу из моего списка контактов, в которой все имеют примечания Lotus Notes, используя определенный «шаблон» либо из стационарного, либо с динамически созданного документа (мне нужно было бы выяснить, как форматировать, заполнить таблицы и «вставить» .jpg в документ) –

0

На основании комментария резьбы на ответ @Knut Herrmann, я считаю, что решение, которое вы действительно хотите, включает в себя использование «сохраненная формы». Первый аргумент метода NotesDocument.Send() - это логическое значение, указывающее, хотите ли вы сохранить форму или нет.

Как правило, вы должны использовать Domino Designer для создания сохраненной формы. Вам не нужны права Дизайнера для любого почтового ящика. Вам просто нужно создать пустую базу данных и вставить в нее форму. Вы изменили бы свой код, чтобы открыть эту базу данных и создать там документ, а не в базе данных почтовых ящиков, как сейчас. (Одна из других замечательных вещей о Notes - это то, что вам действительно не нужно работать в базе данных почтовых ящиков, чтобы отправить документ.Вы можете отправить любой документ из любой базы данных, до тех пор, как вы выразились поля approporiate в него.)

Существует также способ сделать это без Domino Designer, и вы могли бы даже динамически генерировать форму с действительно настраиваемые поля, которые ваш код обнаруживает только при его запуске. Вы можете сделать это с помощью DXL, который представляет собой формат XML для описания объектов Lotus Notes, включая формы. Вам просто понадобится образец DXL для работы. Предпочтительно, это должно быть пустой базы данных, которая содержит простую форму, которая более или менее настроена в макете, которую вы хотите, хотя для этого вам понадобится Domino Designer. Вы могли бы использовать одну и ту же базу данных почтовых ящиков, которую в настоящий момент использует ваш код, но это оставит вам много лишних вещей в DXL, которые не обязательно должны быть там; и, учитывая, что вы не все знакомы с Notes, вам, вероятно, будет сложно провести все это, чтобы найти то, что вам нужно.

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