View previous topic :: View next topic |
Author |
Message |
Яков
Joined: 04 Mar 2002 Posts: 618 Location: Яков Occupation: Экстремальная терапия бизнеса Interests: Владивосток
|
Posted: 17 Nov 2005 03:55 Post subject: |
|
|
Да я не о том.
Индексы конечно вещь хорошая, но я о другом.
val предлагает искать несуществующие записи и добавлять их в файл.
У меня же формируется буфер, из него удаляются все существующие записи, пакуется и затем копируется в целевой файл.
Получается если не быстрее, то проще.
К тому же при подобных задачах клиенты просят не просто "синхронизировать" они постоянно хотят влиять на этот процесс исключая из добавления данные по одним им известным критериям.
SEEK несомненно быстрее,
Спасибо за напоминание.
Но и в таком виде делается почти мгновенно.
Так что дальнейшей оптимизацией не занимался. |
|
Back to top |
|
|
dmitry
Joined: 03 Jan 2002 Posts: 33 Location: Орлов Д.В. Occupation: Элипс-Опт Interests: Москва
|
Posted: 17 Nov 2005 09:57 Post subject: |
|
|
nordk wrote: | Поэтому я и говорю везде переход на харбор это ОЧЕНЬ ВАЖНО |
Думаю, проблем меньше не станет. Хотя появился отладчик, это конечно плюс. Да и команды теперь можно использовать.
nordk wrote: |
Извините но здесь Вы не понимаете функцию DBSEEK()
Она всегда ищет сначала и всегда встает на первую найденную - не надо думать что она начинает искать с места нахождения курсора.
Так что Ваше гарантированно - масло масленное
|
Согласен, DbGoTop() в данной ситуации действительно не обязателен.
nordk wrote: |
2.Совместный диалог посмотрите и скажите что не получилось в данный момент быстрее. Вопросов много задают и вопросы есть очень сложные, которые надо в текстах долго выискивать - всем надо помочь
|
DbSeek() в данном примере не работает. Почему? Не понятно.
nordk wrote: |
Мой многолетний опыт применения этого FileEval - целый модуль на нем написан тексты приличных размеров отладить это наверно что-то значит ?
|
А давайте не будем меряться размерами... Мой опыт работы с Fileeval-ом позволяет с Вами не согласиться
nordk wrote: |
Еще раз повторяю или перечитайте выше в харборе работает а в FileEval нет - потому что он не харбор.
|
Код указанный ниже будет работать в Fileeval?
Code: |
mlabel->(addrec())
mlabel->grup:=NewMlabel->grup
mlabel->nnum:=NewMlabel->nnum
mlabel->(f_dbunlock())
|
А вот решение задачи, которую предложил Val:
Code: |
//function main
Private cPath
cPath:="c:\temp\"
//altd()
if !file(cPath+"mlabel.dbf")
sayandwait("Не найден файл по пути "+cPath +" !")
else
NetUse("NewMlabel",cPath+"Mlabel.dbf")
newMLabel->(DbGotop())
Do While NewMlabel->(!eof())
DbPush("MLABEL","MLABEL",,{"UPPER(GRUP+NNUM)",upper(NewMlabel->(Grup+Nnum))})
if Mlabel->(Eof())
mlabel->(addrec())
mlabel->grup:=NewMlabel->grup
mlabel->nnum:=NewMlabel->nnum
mlabel->(f_dbunlock())
endif
DbPop()
NewMlabel->(DBskip())
enddo
endif
//return
|
К сожалению, так как поиск не работает пришлось делать через функциюю DbPush() и скоб. Это быстрее чем фильтр, но медленнее чем поиск по ключу.
Если убрать комментарии в начале и конце текста, то получится код пригодный для компиляции с помощью harbour.exe |
|
Back to top |
|
|
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 17 Nov 2005 11:34 Post subject: |
|
|
mlabel->(addrec())
mlabel->grup:=NewMlabel->grup
mlabel->nnum:=NewMlabel->nnum
mlabel->(f_dbunlock())
В таком виде FileEval работать не будет, только HFileEval
Меряться действительно не будем, но различия между ними день и ночь - это бесспорно.
Отлдачик это не просто плюс - я решение которое полгода отладить не мог отладил за 2 часа - думаю это серъезно.
Плаваюущю ошибку искать запарился через SayAndWait() да не видя состояния таблиц.
Если у Вас не работает DBSEEK() то только по 3 причинам
- нет индекса
- индекс поврежден
- не правильный ключ поиска или не те в нем значения.
Собственно говоря нужно просто успокоится, еще раз посмотреть свежим взглядом и все заработает. |
|
Back to top |
|
|
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 17 Nov 2005 11:35 Post subject: |
|
|
ЯКОВУ
Ваше мнение что искать несуществующую запись не по индексу быстрее это тоже заблуждение. Как раз по индексу сразу и найдете |
|
Back to top |
|
|
Яков
Joined: 04 Mar 2002 Posts: 618 Location: Яков Occupation: Экстремальная терапия бизнеса Interests: Владивосток
|
Posted: 18 Nov 2005 02:22 Post subject: |
|
|
nordk wrote: | Ваше мнение что искать несуществующую запись не по индексу быстрее это тоже заблуждение. |
Я такого не говори |
|
Back to top |
|
|
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 18 Nov 2005 09:32 Post subject: |
|
|
Да, виноват неправильно прочитал......
Приношу свои извинения |
|
Back to top |
|
|
|