Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Создание индекса таблицы dBaseIII+ [dBase, FoxPro]


Страницы:   1 2 3

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
И описание ты тоже наверно неверно читал, или эе просто выкинь ту книжку, посколько в ней ложь.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо