0

В форме, подобной LedgerJournalTransDaily, есть поле Txt, импортированное из LedgerJournalTrans. Используя JournalNum, мне нужно пойти в LedgerJournalTable и получить поле Name.Оптимизировать метод отображения

Я написал метод отображения, как следует:

[SysClientCacheDataMethodAttribute(true)] 
public display Name GetLedgerJournalTableName() 
{ 
    LedgerJournalTable ledgerJournalTable; 
    Name ret; 

    select firstFast firstOnly ledgerJournalTable 
     where ledgerJournalTable.JournalNum == this.JournalNum; 

    ret = ledgerJournalTable.Name; 

    return ret; 
} 

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

+2

Функциональное тело должно быть однострочным: 'return LedgerJournalTable :: find (his.JournalNum) .Name;' –

+0

@ JanB.Kjeldsen спасибо, я начинаю понимать суть этого однострочного интерфейса. –

+0

@ JanB.Kjeldsen Я не обязательно соглашаюсь, если производительность ключевой: выберите firstFast firstOnly name из bookgerJournalTable где BookgerJournalTable.JournalNum == this.JournalNum; 'с индексом на journalnum и именем в качестве включенного столбца может иметь смысл так как вы можете превратить его в поле выбора. Это платит за производительность с удобочитаемыми монетами, но –

ответ

2

Если производительность является проблемой, вы можете попробовать добавить LedgerJournalTable, как только для чтения источника данных в форму с OnlyFetchActive = Yes, присоединиться к нему с источником данных LedgerJournalTrans и добавьте Name поля нового источника данных для проектирования формы.

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

Для дальнейшего ознакомления ознакомьтесь с Tutorial: Caching display methods от Ivan Kashperuk.

0

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

общественный статический Имя сервера getJourName ... ... выберите имя из ledgerJournalTabel ...

А также вы можете установить ложна в параметре кэша atribute, потому что номер журнала не меняется за исключением сделок, в большинстве случаев ,

+0

В этом случае серверный метод не купит вам ничего, как это приведет к потере кэширования на стороне клиента. Поэтому методы 'find' должны * не использовать ключевое слово 'client'. –

+0

Вы должны использовать метод отображения с кешированием. Но в этом методе вы можете вызвать свой статический серверный метод. Методы «Найти» возвращают всю запись и с помощью методов отображения это не требуется. –

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

  • Нет связанных вопросов^_^