Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.06;
Скачать: CL | DM;

Вниз

Как настроить ADO что бы быстрее работало с dbf,а то   Найти похожие ветки 

 
ceval ©   (2004-12-31 09:28) [0]

Как настроить ADO что бы быстрее работало с dbf,а то
долго открывает
Пробывал крутить с  CursorLocation менял ClUseServer
и CLUseClient не помогло
Спасибо


 
Anatoly Podgoretsky ©   (2004-12-31 10:04) [1]

Используй БДЕ


 
sniknik ©   (2004-12-31 11:13) [2]

что именно надо ускорить?
если открытие таблиц то ставь серверный курсор (не помогло значит чтото напортачил), если "пробежку" по датасетам то локальный. если и то и другое то зависит от провайдера, не все могут в локальном режиме работать (вообще ADO это для клиент серверных "отношений" ;о)).
и в любом случае если ты собираешся с клиент сервером работать мотодами файл сервера/локалки, то скорости не жди.
> Используй БДЕ


 
ceval ©   (2004-12-31 12:07) [3]

Пробывал на BDE но при открытии индекстного файла *.CDX  
выдает :
Procudtion index files missing corrupt or cannot interpret index key
и открывает в режиме Open read only без индексов


 
Anatoly Podgoretsky ©   (2004-12-31 12:20) [4]

А что же ты молчал, что у тебя FoxPro, для него используй АДО с соответствующим провайдером OLEDB


 
ceval ©   (2005-01-04 09:20) [5]

Так я пробывал и Provider=Microsoft.Jet.OLEDB.4.0 и Driver={Microsoft dBase Driver (*.dbf)} и Driver={Microsoft FoxPro VFP Driver (*.dbf)} но все равно работает очень медление чем в BDE


 
sniknik ©   (2005-01-04 12:16) [6]

понимаеш разницу между локальным и клиент серверным методами?
при локальном открытие таблици это - просто открытие файла и "навигация" в нем перемещение по записям, при клиент серверном открытие это - чтение файла на сервере и перекачка запрошенных данных на клиента, навигация уже в них (полученном рекордсете). естественно будет медленнее, вопрос насколько... если сильно а размер таблиц маленький то скорее всего глюк в коде.

ADO разрабатывалось для клиент серверного метода и работает так даже с локальными базами, роль сервера выполняет провайдер данных, такой как jet например. правда у jet-а есть подобная "фенечка" как работа с локальными данными локально что достигается установкой серверного курсора (и еще чегото там посмотри в хелпе на функцию seek в нотациях) работать будет (должно) быстрее но так как все идет через COM обьект все одно немного(!!!) медленнее (глазом не усечеш) чем при прямом открытии файла, само чтение в COM обьекте для dbf/db делается через BDE (такая вот особенность, читай хелп лоя jet-а).
VFP по моему всегда так работает, но у него есть свои "фенечки" (например нет нормальной работы с индексами, создание удаление, в отсутствии базового файла)

слова "очень медление" дают основание что ты просто "не справился с управлением" ;), не смог правильно настроить. пробуй еще (если не хочеш всетаки внять голосу разума [1] ;о))).


 
Anatoly Podgoretsky ©   (2005-01-04 13:20) [7]

ceval ©   (04.01.05 09:20) [5]
Что значит медленнее, у тебя с БДЕ совсем не работает, то есть скорость нулевая.

sniknik ©   (04.01.05 12:16) [6]
[1] не получится смотри абзац выше, у него ФоксПро неизвестной версии.


 
msguns ©   (2005-01-04 15:10) [8]

ADO вообще работает значительно медленнее с локалками (см.sniknik ©   (04.01.05 12:16) [6] 2-й абзац). Биде открывает курсор существенно быстрее (нету тормозов при открытии формы). Однако преимущества биде очень быстро превращаются в недостатки при больших объемах: ADO как работало "повильно", так и работает, а биде начинает тормозить не по-детски. Да и существенные траблы с откатами-подтверждениями, что приводит к слету индексов и ремонту БД. Часто с потерями информации. В ADO же подтвержденные данные не теряются (т.е. если прога получила сигнал о том, что апдейт завершен, можно быть уверенным, что в базе все изменения сохранились и сама база корректна). Чего нельзя сказать и биде. За скорость "реакции" приходится платить пониженной надежностью.


 
sniknik ©   (2005-01-04 17:33) [9]

Anatoly Podgoretsky ©   (04.01.05 13:20) [7]
если через jet подключился значит есть хорошие шансы что выйдет.

но вообщето да, не обратил внимания.

ceval
с VFP драйвером открытие с серверным курсором намного быстрее (непонятно почему у тебя не получилось) чем с локальным (сам попробовал открыть большую таблицу ~200тыс записей, на локальном 9,5сек на серверном около 1 сек, да не прямое открытие, которое будет 0 сек занимать но всетаки быстрее)
если уж так критично, и базу не поменять то поиши обертку (/компанент) для ODBC-шной библиотеки odbc32.dll. (правда может и не помочь, если принцип реализован на уровне драйвера... т.е. сам драйвер работает не на открытом файле, а с перекачкой в рекордсет и работает уже с ним. что вполне возможно)


 
ceval ©   (2005-01-05 16:04) [10]

Большое огромное спасибо всем за помощь !!
Я тут помучился и уменя получилось следующие :
поставил Driver={Microsoft dBase VFP Driver (*.dbf)} таблица 17164 записей (при  локальном
9,2 сек, а при серверном 2,4 сек конечно по быстрее будет)
Но у меня возникла другая проблема ИНДЕКСАМИ
Если я правельно разобрался в АДо нельзя подключить индекстный файл как в BDE
 table.Indexfiles.Add("ktcpind.cdx");
   table.IndexName:="izd";
В ADO есть INdexFielName
При попытке открыть
ADOTable1.TableName:="ktcp";
 ADOTable1.Active:=true;
 ADOTable1.IndexFieldNames:="odcc;oicc";

ADoTable установлен dBase VFP Driver и северный курсор выдает ошибку
"Выполняемая приложением операция не поддерживается службой доступа"
А если стоит локальнай курсор то открывает без проблем
Что ДЕЛАТЬ ?? (почти по Герцину :) )


 
sniknik ©   (2005-01-05 17:05) [11]

используеш поля не входяшее в индекс. при локальном курсоре это "знак" для ADO что нужно сделать переиндексацию (временную на рекордсете но не в таблице) для серверного эта же операция предлагается драйверу который ее не поддерживает.

> Если я правельно разобрался в АДо нельзя подключить индекстный файл как в BDE
неправильно, cdx это не файловый индекс который нужно подключать (компаундный, насколько помню термин ;) смысл в том что там несколько индексов в одном, обрашаются к ним по тегам, а подключается он (и в BDE тоже, опять же насколько помню) автоматически по признаку индексированности в файле *.dbf (если признак есть то подключается)
подключаются же файловые индексы с расширениями *.idx (фокс) *.ntx (dBase/клиппер).

> Что ДЕЛАТЬ ??
пользуйся готовыми индексами которые найдеш в списке IndexName компанента (если нужны другие/новые сделай в фоксе). прежде чем задать еще вопрос на эту тему перечитай [6] внимательно по поводу "фенечек". ;о)


 
ceval ©   (2005-01-05 18:32) [12]

sniknik [11]
> Что ДЕЛАТЬ ??
пользуйся готовыми индексами которые найдеш в списке IndexName компанента (если нужны другие/новые сделай в фоксе).
В том то и дело что индексов в списке IndexName нет ?

ы.з.[6] еще раз внимательно прочитаю обязательно


 
sniknik ©   (2005-01-05 19:02) [13]

> В том то и дело что индексов в списке IndexName нет ?
значит и индексов нет, вообще. (снят признак в файле, индексный файл порушен (нет заголовка, описаний), индексный файл имеет не то имя (должно совпадать с dbf-ным), возможно директория/имя по русски/с пробелами поэтому движок его не находит, и т.д. сразу все не смогу предположить, что  возможно)


 
ceval ©   (2005-01-05 19:13) [14]

Тут ты прав sniknik [13] так сложилось еще до меня все индекстные файлы имеют имя файла dbf + i-на конце XXX.dbf XXXi.cdx( индексный файл имеет не то имя (должно совпадать с dbf-ным))
А что можно сделать в этом случаи ?


 
sniknik ©   (2005-01-05 19:44) [15]

> Тут ты прав sniknik [13]
т.е. в остальных случаях я не прав? будь добр скажи где, а то ведь не усну буду мучится искать в чем моя неправота. ;о))

> А что можно сделать в этом случаи ?
взять компонент который это понимает, благо валом их (ктото говорил штук 300, я когда искал, нашол, скачал, проверил 28(примерно) остановился на halcyon-е. тебе он может и не подойти, версию фокса ты так и не уточнил...).


 
ceval ©   (2005-01-05 20:17) [16]

Удалено модератором
Примечание: дубль


 
ceval ©   (2005-01-05 20:19) [17]

Sniknik просто для меня в первую очередь просилось в глаза "индексный файл имеет не то имя (должно совпадать с dbf-ным)"

Я тоже взял и пробывал на других компонентах
Начал делать на halcyon"е 6 тут возникла проблема с поискам
....
 try
if Fmain.Table_cenpok.Locate("bsh;sh",VarArrayOf ([edit1.Text,Edit2.text]),[loCaseInsensitive])
    then  ModalResult:=mryes
 else    ModalResult:=mrno
 except
......
Один и тодже  код использывал при поиске ADO и при использывании
Halcyon в ADO ищет в Halcyon нет - (дело в том что я использую около 10 dbf-файлов в большой половине работает а в некоторых нет)



Страницы: 1 вся ветка

Текущий архив: 2005.02.06;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.03 c
3-1104398587
Georji
2004-12-30 12:23
2005.02.06
Извлечение месяца


9-1099470111
.dn
2004-11-03 11:21
2005.02.06
"ЧЕЛ"&ДОРОГА


3-1105011777
sergeii
2005-01-06 14:42
2005.02.06
Копирование полей


8-1098332767
vg
2004-10-21 08:26
2005.02.06
Помогите в винде "содрать" рисунок.


1-1106331313
jeck009
2005-01-21 21:15
2005.02.06
присвоить значение переменной из реестра....