Lotus Notes - добавление формы программно - NotesForm - PullRequest
1 голос
/ 16 июля 2011

Я бы хотел скопировать форму из одного NSF в другой NSF программно.Мне известно, что класс NotesDocument имеет метод CopyToDatabase, а класс NotesDatabase имеет метод CreateView.

Однако я не нашел ничего, что позволило бы мне добавить форму в NSF.

Я использую Lotus Notes 8.5.2, COM и C #.

У меня нет проблем с получением информации о формах или их удалением, и у меня есть следующий фрагмент кода:

        //NotesConnectionDatabase and nd2 are objects of type NotesDatabase and are 
        //members of the same session.

        //Write the name of each form to the console.
        //Delete each form from the database.
        for (int i = 0; i <= (((object[])NotesConnectionDatabase.Forms)).Length - 1; i++)
        {
            Console.WriteLine(((NotesForm)((object[])NotesConnectionDatabase.Forms)[i]).Name);
            ((NotesForm)((object[])NotesConnectionDatabase.Forms)[i]).Remove();
        }

        //For each form in nd2, copy the form to NotesConnectionDatabase.
        for (int j = 0; j <= (((object[])nd2.Forms)).Length - 1; j++)
        {
            //I am aware that there is no such method as NotesForm.CopyToDatabase
            ((NotesForm)((object[])nd2.Forms)[j]).CopyToDatabase(NotesConnectionDatabase);              
        }

Ответы [ 2 ]

2 голосов
/ 16 июля 2011

Используя класс NotesNoteCollection, вы можете получить коллекцию форм. Свойство SelectForms должно быть установлено на TRUE, а остальное должно быть установлено на FALSE.

После создания NotesNoteCollection он будет содержать коллекцию форм (документов), к которым можно получить доступ следующим образом:

nid = nc.GetFirstNoteId
  For i = 1 To nc.Count
    Set doc = db.GetDocumentByID(nid)
    nid = nc.GetNextNoteId(nid)id
  Next

Документ можно скопировать методом CopyToDatabase

0 голосов
/ 19 июля 2011

Для пользователей C # ...

        //NotesConnectionDatabase is of type NotesDatabase.

        //A NotesNoteCollection represents a collection of Domino design 
        //and data elements in a database.
        NotesNoteCollection nnc;
        nnc = NotesConnectionDatabase.CreateNoteCollection(false);
        //All the different types of elements default to false.
        //Set SelectForms = true to add forms to the collection.
        nnc.SelectForms = true;
        nnc.BuildCollection();

        //...

        string nid = nnc.GetFirstNoteId();
        for (int i = 1; i <= nnc.Count; i++)
        {
              NotesDocument doc = NotesConnectionDatabase.GetDocumentByID(nid);
              doc.CopyToDatabase(ndDestination);
              Console.WriteLine(nid + " copied");
              swCopyForms.WriteLine(nid + " copied");
              nid = nnc.GetNextNoteId(nid);
        }
...