BEST logo логотип компании БЭСТ - программы для бизнеса ПРОДАЖИ
+7 (991) 312-04-37
trade@bestnet.ru
ПОДДЕРЖКА
+7 (495) 775-66-76
consult@bestnet.ru
СКАЧАТЬ
Обновления
Дистрибутивы
Авторизация

Логин:
Пароль:
Забыли свой пароль?
Регистрация
ВАШ ВОПРОС

Доступ к Личному кабинету закрыт!
Как получить доступ?


Главная  / Поддержка  / Форум  / Публичные форумы  / Программирование приложений  / Индикатор процесса в CreateTempIndex

Форум

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Индикатор процесса в CreateTempIndex
 
Я недавно использую эту функцию в БЭСТ-4, почему-то во всех случаях индикатор процесса не двигается, то есть загорается рамка индикатора и остается пустой до окончания процесса, а сам индикатор не бежит. Это так у всех происходит, или можно что-то сделать?
БЭСТ-4+ 12.01 SP44
 
Марина а Вы можете показать для начала как Вы делаете ?
 
Cудя по исходнику функции CreateTempIndex он и не должен бежать.
Для обновления необходим вызов PROCES_UPDATE.
С уважением,
Ильин Евгений
 
Делаю примерно так
Код
netuse("mlabel1",Loadpath()+"sclad\mlabel",,.f.)
ordsetfocus("mlabel_t") //по name
go top
...
indexname:=CreateTempIndex('status+upper(name)','ascan(aOtmPost,nnum)>0')
set index to (indexname)
БЭСТ-4+ 12.01 SP44
 
Я заметила, что в коде съелся обратный слэш, а при редактировании он присутствует
Это не у меня, форум сам так делает
БЭСТ-4+ 12.01 SP44
 
Судя по тексту там полоса прогресса и не нужна....
А зачем это там непонятно :D

Код
FUNCTION CreateTempIndex(cNtxKey,cForKey,cNameTag)
// Создание временных индексов
// Только по одному тэгу в бэге
Local nStep
Local cTagName
Local nProces:=Proces_Ini(,17,,'Построение вспомогательного индекса')
Local n, bForKey, bNtxKey, aIndex, nPoz
Local cNameNtx := TempFile(m->GlobalTmpPath,'CDX')
nStep := IIf(LastRec()==0,1,INT( 54/LASTREC()))
cNameTag := If(cNameTag==NIL, "TMP_TAG", cNameTag)
cForKey := IF(EMPTY(cForKey),"!DELETE()"+IF(FieldPos("DELETE") != 0,".AND.!DELETE","")+IF(FieldPos("ARXIV") != 0,".AND.!ARXIV",""),"!DELETE() .AND."+IF(FieldPos("DELETE") != 0,"!DELETE.AND.","")+IF(FieldPos("ARXIV") != 0,"!ARXIV.AND.","")+" ("+cForKey+")")
SetKeyIndex(@cForKey,@cNtxKey,@bForKey,@bNtxKey)
IF (nPoz := ASCAN(aIndex := BsSaveIndex(),{|cNameIdx| UPPER(cNameIdx) == UPPER(cNameNtx) })) != 0
  ADEL(aIndex,nPoz)
  ASIZE(aIndex,LEN(aIndex)-1)
  BsClearIndex()
  BsRestIndex(aIndex)
ENDIF
FERASE(cNameNtx)

dbGoTop()
ordCondSet(cForKey,bForKey,NIL,,;
,;
1,RECNO(),,,.T.,,.F.,,.T., .F., .F., .T., .F., .F.)

IF(cTagName = NIL,cTagName := TOKEN(TOKEN(UPPER(cNameNtx),":\"),".",1),NIL)
ordCreate(cNameNtx,cTagName,cNtxKey,bNtxKey)

ORDSETFOCUS(cTagName)

DBGOTOP()
ReopenDbf()
Proces_End(nProces)
RETURN cNameNtx
 
Ну как же непонятно, ведь индекс может строиться долго, надо чтобы пользователь ждал. Жаль что полоса прогресса не работает.
А как же идет полоса во время индексации БЭСТ, только по количеству проиндексированых файлов, что ли? Без учета пройденной доли каждого файла? Или наверное по кол-ву тэгов?
БЭСТ-4+ 12.01 SP44
 
Добрый день.

Выведите сообщение типа "Идёт построение индексного файла, ждите" с помощью функции busy(). Пользователь будет проинформирован о совершаемом действии с одной стороны и, с другой стороны, не будет ждать на секунду-другую дольше из-за того, что индексация будет на каждой записи двигать прогресс. :-)
С уважением, Новиков Алексей.
 
Цитата
Марина Кондрина пишет:
Ну как же непонятно, ведь индекс может строиться долго, надо чтобы пользователь ждал. Жаль что полоса прогресса не работает.
А как же идет полоса во время индексации БЭСТ, только по количеству проиндексированых файлов, что ли? Без учета пройденной доли каждого файла? Или наверное по кол-ву тэгов?

По файлам и по тегам.
Т.е. полоса прогресса может идти в любом цикле.
А когда цикла нет - это когда речь идет о построении конкретного индекса.
Это делает функция не БЭСТа и полосы прогресса в себе не имеет.
Разумеется только сообщение типа ждите и т.д. и т.п.
Страницы: 1
Читают тему (гостей: 1)