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

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

Создание индексов в таблицах Dbase [D7]


Алекса ©   (2003-12-26 07:51:00) 

Всем добрый день! Мне тут не повезло - подкинули базу dbase 3+. Для нее необходимо создать индекс. Пыталась как для dbase 4(код приведу ниже), но ничего не вышло.Может для создания индекса в такой базе нужна какая-то специфическая команда?

Часть кода для dbase 4
В данной процедуре исправляется заголовок
procedure TFrmDbf.RemoveMDXByte(dbFile: string);
const
Value: Byte = 0;
var
F: file of byte;
begin
//Исправление заголовка, чтобы не требовать файл .mdx
AssignFile(F, dbFile);
Reset(F);
Seek(F, 28);
Write(F, Value);
CloseFile(F);
end;

//В этом кусочке процедуру создается индекс
Tkredit.Exclusive :=true;
Tkredit.addIndex("ID_NLS","NLS",[]);
Tkredit.Open;
dbiPackTable (Tkredit.Database.Handle, Tkredit.Handle,PChar (Tkredit.TableName), szDBASE, True);
Tkredit.close;
Tkredit.Exclusive :=false;


sniknik   (2003-12-26 10:52:00) [1]

> Table level changed
похоже на то что в индексе чтото, что несовместимо в 3, пытается/конвертит в 4.
кстати откуда увереность что сама табличка в 3м формате? может например клипер или фокс.

запросом не пробовал/а ?
CREATE INDEX NLS ON Table (NLS)

не получится переходи на Halcyon (или ананалог) я с ним работаю, с клиперными правда, а в последнее время и с фохрошными таблицами/индексами, но тоже старыми (индексы ntx, idx), нормально получается.


Алекса   (2003-12-26 08:49:00) [2]

Sniknik - попробовала. Выдает ошибку - Table level changed. Хотя я в BDE администраторе в сонфигурации-драйвера для Dbase специально поставила level 3.


sniknik   (2003-12-26 08:43:00) [3]

в третьем не может быть .mdx, а только файловые *.ntx, и имя файла индексного должно с именем поля совпадать (не всегда, но в некоторых случаях требуется). в обшем попробуй
Tkredit.addIndex("NLS","NLS",[]);

все остальное тоже самое.


Наверх

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