Lotus Notes — Программное добавление формы — NotesForm

Я хотел бы программно скопировать форму из одного 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);              
        }

person Jacob Quisenberry    schedule 15.07.2011    source источник


Ответы (2)


Используя класс 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

person Jasper Duizendstra    schedule 16.07.2011

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

        //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);
        }
person Jacob Quisenberry    schedule 18.07.2011