![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание индекса таблицы dBaseIII+ [dBase, FoxPro]
Ada © (2003-09-25 11:29:00)
Подскажите пожалуйста как создать индекс для таблицы dBaseIII+ программным путем, у меня выдается масса ошибок.
При создании индекса через Database Desktop все получается отлично.
Anatoly Podgoretsky (2003-10-02 11:56:00) [1]
Это не я про настройки БДЕ не говорю (не VCL, а БДЕ, про настройки VCL я не говорил), а ты или автор вопроса, так же если ты читал внимательно, то заметил, что нужны не только настройки БДЕ, а правильный файл должного форматае, правильное создание индексов и полей (иначе файл будет автоматически преобразован в более старшую версию), правильные установки свойств свойств компонент и т.д.
Я же лично предпочитаю использовать функции БДЕ, хотя последнии 5 лет уже не было нужды создавать подобные индексы, поэтому возможны изменения в поведении БДЕ, по крайней мере установка уровня 7 весьма сильно влияет на все поведение, требуются большие разборки, что бы обеспечить правильную работу.
Ильш (2003-10-02 09:56:00) [2]
Ну раз вы Anatoly все умеете, в отличие от меня. Скажете народу, рассекретьте информацию. Что там надо настраивать. Ато все про настройки VCL говорите, но ничего конкретного?
Anatoly Podgoretsky (2003-10-01 15:18:00) [3]
Ильш © (01.10.03 12:27) [42]
Database Desktop создает через БДЕ, а не через VCL
Что бы создавать через VCL надо выполнить многое, а что у тебя как настроено, народу не известно, телепатов здесь нет.
Я писал уже не умеешь через VCL, делай через БДЕ, и надежнее будет, поскольку будет работать не взирая на настройки
sniknik (2003-10-01 13:18:00) [4]
кстати не подскажете в какой фазе у нас сегодня луна находится? :о)))
sniknik (2003-10-01 13:12:00) [5]
Ильш © (01.10.03 12:27) [42]
твоя правда, решил проверить и получил то же самое, более того он еще и тип таблички на dBase IV поменял. (посмоти на тип гденибудь до и после, я в SQL explorer смотрел)
значит надо просто по другому делать если нужен именно NDX. (может можно и это исправить но если честно разбиратся неохота)
Ильш (2003-10-01 12:27:00) [6]
Ну, ребята, ну вы че думаете я ничего не проверил и лажу тут гоню??? :(((
Эээх! В Database Desktop все отрабатывает правильно! Для dBase III создается ndx (не mdx)!!! Но проблема то в том, что AddIndex-су наплевать на это. Он прикручивает MDX !!!!!!!!
Повторяю!!! Условия задачки: Табличка dBase III, в Database Desktop создается NDX индекс, а AddIndex все равно создает MDX !
sniknik (2003-10-01 10:52:00) [7]
Ильш © (01.10.03 08:43) [40]
а ты сам проверь, только не из своей проги а в Database Desktop к примеру. только не бери свою "100% dBase III" табличку, начни с ее создания в нем, и вот если Database Desktop тебе откажет в создании mdx-а (а именно так и должно быть) то потом попробуй применить вышеописанным метод именно к этой табличке.
сам и выясниш получится или нет (99% за то что не получится, 1% на влияние фаз луны).
Ильш (2003-10-01 08:43:00) [8]
Т.е. у вас значит для файла dBaseIII mdx не создается вышеописанным методом?
Anatoly Podgoretsky (2003-10-01 07:41:00) [9]
Для того, что бы получилось, надо многое сделать, правильно настроить БДЕ, правильно установить свойства компонентов, должен быть 100% чистый dBaseIII файл, правильно создать правильные индексы.
Как минимимум, что бы получить помощь, надо привести все эти данные. И конечно надо понимание форматов dBase и FoxPro, понимание VCL и его азаимодействия с БДЕ.
Только зачем мучиться с VCL?,когда это легче и правильнее сделать через BDE, тогда не будет такой жесткой завязки на настройки БДЕ и конмпонент, но и в этом случае все равно надо выполнить все условия по созданию индекса.
" Вы проверьте сами" нет необходимости повторно проверять, то что работает.
Ильш (2003-10-01 06:15:00) [10]
Для Adы!
http://e-dok.narod.ru/delphi/question1/bd/bd-291.html
почитай!!!
> Anatoly Podgoretsky © (30.09.03 10:14) [37]
Вот тут обнаружилась такая бяка! Беру 100% файл dBaseIII. Специально проверил структуру! Делаю AddIndex. Заглядываю опять в структуру. Такое чувсьво, что AddIndex не разбирает какая версия dBase используется. Он настойчиво пишет в 28 позицию флаг наличия mdx файла и создает этот файл. Чего по теории быть не должно! Вы проверьте сами!!!
Anatoly Podgoretsky (2003-09-30 10:14:00) [11]
Ильш © (30.09.03 09:33) [35]
Как не старайся, но ты создал файл формата 4 или выше, об этом говорит наличие mdx.
Ильш (2003-09-30 09:45:00) [12]
Все таки вся проблема в том, что то место где этот флаг ставится у dBaseIV в dBaseIII+ и ниже просто зарезервированная область. Т.е. в нее AddIndex легко может писать все что захочет !!!!!
Ильш (2003-09-30 09:33:00) [13]
> Ты создал файл формата 4 или выше.
Блин! Ну неужели я пишу не по-русски??? Я создал файл DBASEIII+ !!! Ну да ладно! Проехали уже. :)
Странно, что Ada ничего не говорит??? Помогло или нет. Жаль :(
Anatoly Podgoretsky (2003-09-26 20:37:00) [14]
gydi (26.09.03 20:24) [33]
Зачем писать что то и еще и закерскими способами, когда в БДЕ есть все необходимое? dbiRegisterCallback
gydi (2003-09-26 20:24:00) [15]
from forum:
Вопрос:
[DBF] Как открыть индексированную таблицу DBASE, если нет файла *.MDX?
Ответ:
Для DBASE-таблицы встроенными средствами ты не перестроишь индекс, если его нет. Для этой цели мне пришлось написать процедуру для физического удаления признака индексации в самом DBF файле и после ее применения добавлять индексы заново. Для этого в заголовок файла DBF по смещению 28(DEC) записываешь 0. По другому никак не выходит(я долго бился)- вот для PARADOX таблиц все OK.
Anatoly Podgoretsky (2003-09-26 13:05:00) [16]
Зачем проверять то что заподлинно известно.
Компаундный индексный файл, он же Production поддержан для dBase версий 4/5/5.5/5.7/7/2000/Internet, то есть все что выше или равно 4
Для нижних версий только не обслуживаемые NDX файлы
Так что не надо оспаривать очевидное.
Зачем ты приводишь эту статью, там указана не совсем верная информация, за верной информацие надо ходить к разработчику или критически относиться к другим источникам
Насчет "проверь" я уже сказал, ты просто не умеешь их готовить. И это не AddIndex считает, а ты!!!
Ты создал файл формата 4 или выше.
Ильш (2003-09-26 12:53:00) [17]
> А твоя проверка оказалась хреновой, ни как не соответсвующей
> действительность, нет и не придвидится никаких mdx у dBaseIII
> И описание ты тоже наверно неверно читал, или эе просто
> выкинь ту книжку, посколько в ней ложь.
Во-первых - выбирай выражения!!! (на счет хреновой)
Во-вторых - сам проверь если уж не верится. Все так и есть. AddIndex наплевать на твои изречения. Функция прикручивает в dbf файл mdx. Я сам знаю, что mdx у dBaseIII не должно быть, но AddIndex считает по другому. Если ты видишь какое то другое решение проблемы - предлагай.
описание формата dbf -
http://www.whitetown.com/link/xbase.html#DBF_STRUCT
Term (2003-09-26 11:01:00) [18]
а если таблица используется локально, то это вроде не обязательно
Andrey_and (2003-09-26 10:59:00) [19]
Я незаметил в коде Table1.Exclusive:=true; перед addindex!!!
Anatoly Podgoretsky (2003-09-26 09:53:00) [20]
Ильш © (26.09.03 08:50) [26]
Ей не пофиг, просто надо умень готовить.
А твоя проверка оказалась хреновой, ни как не соответсвующей действительность, нет и не придвидится никаких mdx у dBaseIII
И описание ты тоже наверно неверно читал, или эе просто выкинь ту книжку, посколько в ней ложь.