Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];

Вниз

Как настроить 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.032 c
6-1100694898
Титков Эдуард
2004-11-17 15:34
2005.02.06
Звонилка


3-1104410249
YuriS
2004-12-30 15:37
2005.02.06
ADO + Delphi


1-1106107162
Antonn
2005-01-19 06:59
2005.02.06
Проблемы с перерисовкой контролов и форм


4-1102795588
Relaxxx
2004-12-11 23:06
2005.02.06
нужно получить список установленых винчестеров


1-1106525159
Profi
2005-01-24 03:05
2005.02.06
Свой TTreeView





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский