Форум: "Базы";
Текущий архив: 2004.01.23;
Скачать: [xml.tar.bz2];
ВнизСоздание индексов в таблицах Dbase Найти похожие ветки
← →
Алекса (2003-12-26 07:51) [0]Всем добрый день! Мне тут не повезло - подкинули базу 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 08:43) [1]в третьем не может быть .mdx, а только файловые *.ntx, и имя файла индексного должно с именем поля совпадать (не всегда, но в некоторых случаях требуется). в обшем попробуй
Tkredit.addIndex("NLS","NLS",[]);
все остальное тоже самое.
← →
Алекса (2003-12-26 08:49) [2]Sniknik - попробовала. Выдает ошибку - Table level changed. Хотя я в BDE администраторе в сонфигурации-драйвера для Dbase специально поставила level 3.
← →
sniknik (2003-12-26 10:52) [3]> Table level changed
похоже на то что в индексе чтото, что несовместимо в 3, пытается/конвертит в 4.
кстати откуда увереность что сама табличка в 3м формате? может например клипер или фокс.
запросом не пробовал/а ?
CREATE INDEX NLS ON Table (NLS)
не получится переходи на Halcyon (или ананалог) я с ним работаю, с клиперными правда, а в последнее время и с фохрошными таблицами/индексами, но тоже старыми (индексы ntx, idx), нормально получается.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.01.23;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c