19.07.2004, 18:15 | #1 |
Участник
|
Позиционирование курсора на конкретной записи в Data Source на форме
ответ содержащийся в базе знаний жутко тормозит
(в таблице ~100 000 записей) однако "перезод к основной таблице" работает практически мгновенно и устанавливает курсор на нужную позицию |
|
19.07.2004, 19:11 | #2 |
Moderator
|
Насколько я знаю, findRecord() позиционирует запись по RecId. Попробуйте включить индекс по RecId в свойствах таблицы.
__________________
Андрей. |
|
20.07.2004, 10:58 | #3 |
Участник
|
Насчет индекса поддерживаю. Переход к основной таблице правда использует другой механизм. Для его активизации в Args необходимо заполнить два параметра:
PHP код:
|
|
20.07.2004, 16:02 | #4 |
Участник
|
Цитата:
Изначально опубликовано Dron AKA andy
Насколько я знаю, findRecord() позиционирует запись по RecId. Попробуйте включить индекс по RecId в свойствах таблицы. PHP код:
где я облажался? |
|
20.07.2004, 16:53 | #5 |
Участник
|
Имелось ввиду физически создать индекс по RecId. В свойствах таблицы InventTable установить для св-ва CreateRecIdIndex значение Yes. Ничего сортировать не надо.
|
|
20.07.2004, 17:16 | #6 |
Участник
|
Цитата:
Изначально опубликовано dn
Имелось ввиду физически создать индекс по RecId. В свойствах таблицы InventTable установить для св-ва CreateRecIdIndex значение Yes. Ничего сортировать не надо. св-во CreateRecIdIndex итак Yes код: PHP код:
а в таблице ~80 000 (InventTable) записей это занимает ~2 минуты (однако "пеход к основной таблице" происходит мгновенно (по полю ItemId)) вообще необходим такой функционал: "В справочнике номенклатуры Необходимо реализовать возможность такого снятия фильтра по номенклатуре (результат поиска, к примеру), при котором текущая номенклатура, на которой стоит указатель, оставалась текущей и активной после снятия фильтра" |
|
20.07.2004, 18:18 | #7 |
Участник
|
ну, типа, хелп
HELP!!! |
|
20.07.2004, 18:28 | #8 |
Участник
|
Попробуй так:
public void removeFilter() { InventTable cursor; ; record.RecId = inventTable.RecId; element.args().lookupField(fieldnum(InventTable,ItemId)); element.args().lookupValue(inventTable.itemId); super(); this.research(); this.findRecord(cursor); } |
|
20.07.2004, 18:48 | #9 |
Участник
|
не спасло
|
|
20.07.2004, 19:00 | #10 |
Модератор
|
Если сделаете поиск по findrecord() в AOD, найдете кучу примеров его использования. Но присваиваний RecId Вы там не увидите
вот пример - короче некуда \Forms\BMRunSimple\runStatusChanged() PHP код:
|
|
20.07.2004, 19:09 | #11 |
Moderator
|
Вот работающий пример, наподобие "перехода к основной таблице" :
PHP код:
__________________
Андрей. |
|
20.07.2004, 19:10 | #12 |
Участник
|
Цитата:
Изначально опубликовано Vadik
Если сделаете поиск по findrecord() в AOD, найдете кучу примеров его использования. Но присваиваний RecId Вы там не увидите вот пример - короче некуда \Forms\BMRunSimple\runStatusChanged() PHP код:
проблема в findRecord (runTable_ds.findRecord(oldRunTable) который пробегает все позиции до искомой |
|
20.07.2004, 20:55 | #13 |
Administrator
|
Есть два варианта.
Первый: PHP код:
Плюс подхода в том, что видны записи, уже имеющиеся в displayCache, а к ним добавляется только нужная запись. Минус - если просмотреть dataSource до конца, в displayCache появится две одинаковых записи, и, соответственно, в Grid тоже будет две одинаковых записи, что вводит в заблуждение. Второй вариант: PHP код:
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
20.07.2004, 21:03 | #14 |
Administrator
|
Третий вариант (почти такой же, как предложил Dron AKA andy):
PHP код:
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
21.07.2004, 10:29 | #15 |
NavAx
|
Третий вариант не работает.
Можно вот так: PHP код:
__________________
С уважением, Игорь Ласийчук. |
|
21.07.2004, 12:11 | #16 |
Administrator
|
Цитата:
Изначально опубликовано Garic
Третий вариант не работает.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
21.07.2004, 12:30 | #17 |
Moderator
|
To Maxim:
А есть ли какие-то плюсы у твоего варианта с linkActive() по сравнению с моим?
__________________
Андрей. |
|
21.07.2004, 12:37 | #18 |
Administrator
|
Честно говоря, разницы не заметил
Похоже, что из одного вызвается другое. Просто мне показалось, что для связанных форм linkActive обычно всегда вызвается ядром, а не executeQuery.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
21.07.2004, 12:48 | #19 |
NavAx
|
Цитата:
Изначально опубликовано Maxim Gorbunov
А Вы пробовали? Оказывается твой вариант не работает если у датасорса StartPosition = Last, что и было в моём случае. Оно находит запись и сразу же отматывает назад. Фича
__________________
С уважением, Игорь Ласийчук. |
|
21.07.2004, 12:54 | #20 |
Administrator
|
О! Dron AKA andy, вот ответ на твой вопрос. Твой вариант работает во обоих случаях.
То есть, используйте executeQuery()!
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
Теги |
ax3.0, курсор, позиционирование, программно |
|
|