2014-11-11 3 views
0

У меня есть функция, которая вызывает другую функцию - кости показаны ниже.parentView свойство в NotesDocument класс

Когда вторая функция запускается и достигает строки 'set doc = view.getNextDocument (doc), свойство parentView в полностью несвязанном NotesDocument, doc1 также обновляется, тем самым нарушая исходный цикл.

Любые мысли?

function getDept(){ 
dim doc1 as NotesDocument 
dim view1 as NotesView 
. 
. 
. 
set doc1 = view1.getFirstDocument 

while not(doc1 is nothing) 
. 
. 
. 
    call getDeptNumber() 
. 
. 
. 
    set doc1 = view1.getNextDocument(doc1) 

} 

function getDeptNumber(){ 
    dim doc as NotesDocument 
    dim view as NotesView 
    . 
    . 
    . 
    set doc = view.getFirstDocument 

    while not(doc is nothing) 
    . 
    . 
    . 
    set doc = view.getNextDocument(doc) 

    } 

Это сводит меня с ума!

Благодаря

Graeme

ответ

1

Немного непонятно, не видя больше кода, но я подозреваю, что ваша проблема может быть связана с кешированием. Если вы получаете доступ к одному и тому же документу NotesDocument из разных представлений, второй и последующие обращения могут закончиться тем же документом, который у вас уже имеется в памяти в другой части вашего кода. Использование коллекции записей вида, как показано в другом ответе, вероятно, поможет. Задайте свойство autoupdate представления также False.

Но я не могу не заметить, что ваш код не очень хорошо организован или эффективен. Это похоже на вашу подпрограмму (у которой нет параметров, поэтому я предполагаю, что использую глобальные переменные - плохая идея, когда вы можете ее избежать) создает новый объект View каждый раз, когда он вызывается. Это дорого. Кроме того, он, похоже, выполняет итерацию с целью поиска ценности, которая неэффективна. Используйте отсортированное представление и найдите значение, используя методы View.

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

1

Если вы пробегают зрения и есть изменения на документах (которые получили влияние на его), то первая функция может быть, получит проблемы.

Лучше использовать коллекцию для работы над документами.

function getDept(){ 
    dim doc1 as NotesDocument 
    dim view1 as NotesView 
    dim collEntries as NotesViewEntryCollection 
    dim viewEntry as NotesViewEntry 
    . 
    . 
    . 
    set collEntries = view1.getAllEntries() 
    set viewEntry = collentries.getFirstEntry 

    while not(viewEntry is nothing) 
    set doc1 = viewEntry.Document 
    . 
    . 
     call getDeptNumber() 
    . 
    . 
    . 
     set viewEntry = collEntries.getNextEntry(viewEntry) 

    } 
    } 

Используйте этот же параметр для других функций. Но будьте осторожны при удалении документов в коллекции

+0

Спасибо - вытащил меня из отверстия! – NotesNut

Смежные вопросы