AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.12.2004, 12:04   #1  
Kirvisniemi is offline
Kirvisniemi
Moderator
 
342 / 13 (1) ++
Регистрация: 21.12.2004
Когда в коде встречается Table.COUNT или Table.COUNTAPPROX и когда при этом таблица Table содержит flow fields, Navision выдает пользователю (зачем-то) идиотское диалоговое окно "Подсчет записей в таблице Table. Нажмите Ctrl+BREAK..." (Counting records in the Table...)

Понятно, что при этом Navision формирует вычисляемые поля и загоняет их в индексные таблицы в базе. Непонятно только почему так долго. Простейший
Код:
Счетчик := 0;
IF Table.FIND('-') THEN
REPEAT
   Счетчик+=1;
UNTIL Table.NEXT = 0;
выдает результат на несколько секунд быстрее. А ведь можно сделать Table.NEXT(2), Table.NEXT(10) и т.д.

У меня не было времени заниматься экспериментами и смотреть какие селекты выдают эти конструкции на выходе, но ИМХО все-таки это просчет разработчиков.

Вопрос в другом - как избавиться от диалогового окна подсчета?
Старый 06.12.2004, 13:09   #2  
Dzemon is offline
Dzemon
Moderator
 
1,247 / 12 (3) ++
Регистрация: 09.09.2004
Никак нельзя избавиться. Это не баг, это фича! ;-)

Похожие окошки типа "Суммирование записей", "Поиск записей" так же могут омрачать вашу жизнь. Причина этого - занятость сервера. Иногда от этого можно избавиться указание правильного ключа (SETCURRENTKEY) или увеличением размера кэша базы на сервере. Кстати, при выполнении COUNT и FIND вычисляемые поля не вычисляются, если на них не наложен фильтр, а фильтр на вычисляемое поле - это ужасно!
Старый 06.12.2004, 13:17   #3  
Kirvisniemi is offline
Kirvisniemi
Moderator
 
342 / 13 (1) ++
Регистрация: 21.12.2004
Какая же это фича, если отключить нельзя? :-)

Я говорю про случай с фильтром по flow fields. Мне непонятно, почему COUNT работает медленнее обычного перебора.
Старый 06.12.2004, 13:36   #4  
Dzemon is offline
Dzemon
Moderator
 
1,247 / 12 (3) ++
Регистрация: 09.09.2004
Все просто: flow fields неиндексируемые поля, да еще их надо вычислять. Вот и тормозит. А без окошка вы бы подумали, что навижин повис намертво.
Старый 06.12.2004, 14:37   #5  
Kirvisniemi is offline
Kirvisniemi
Moderator
 
342 / 13 (1) ++
Регистрация: 21.12.2004
Ни в одной программе кроме Navision я не видел принудительного (в обход программиста) вывода на экран сообщений о выборке из базы.

Такой диалог я сам нарисовать могу. Имхо было бы гораздо логичнее.
Старый 06.12.2004, 15:23   #6  
Dzemon is offline
Dzemon
Moderator
 
1,247 / 12 (3) ++
Регистрация: 09.09.2004
Обратите внимание, это окошко выводится не всегда, а только при долговременных операциях. И во многих случаях это окошко говорит о проблеме работы с базой.

А самому нарисовать диалог..... Все зависит от уровня доступа к системным функциям, в данном случае он весьма ограничен.
Старый 06.12.2004, 15:34   #7  
Kirvisniemi is offline
Kirvisniemi
Moderator
 
342 / 13 (1) ++
Регистрация: 21.12.2004
При долговременных операциях по всем правилам проектирования интерфейсов рекомендуется рисовать прогресс-бар. Что я и делаю. И картина, когда некий диалог возникает в середине этог прогресса мне совершенно не нужна.

Да собственно проблем-то никаких. Я представляю что происходит с базой и почему так долго. Другое дело что влиять на это никак не могу. Даже триггер таймера в этот момент не срабатывает
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 11:48.