Форум: "Базы";
Текущий архив: 2002.09.02;
Скачать: [xml.tar.bz2];
ВнизКак программно добавить вторичный индекс? Найти похожие ветки
← →
Mike N. Radoman (2002-08-08 18:30) [0]Нужно программно добавить вторичный индекс в таблицу Paradox(не создавая первичный). Дельфя либо ругается - что Table is not indexed, либо просто не создает этот индекс. Посоветуйте, плиз, как решить проблему?
← →
sniknik (2002-08-08 18:33) [1]Без праймари не получится.
← →
Leran2002 (2002-08-08 18:36) [2]Да без первичного ничего не получится...
Я обычно ввожу лишнее автоинкрементное поле и обозначаю первичным ключом.
← →
Anatoly Podgoretsky (2002-08-08 19:03) [3]Получится, но будет необслуживаемы, Парадокс однако
← →
Leran2002 (2002-08-09 07:01) [4]
> Anatoly Podgoretsky © (08.08.02 19:03)
Зато пахать все будет!!!
← →
Mike N. Radoman (2002-08-09 10:01) [5]То есть нужно создать первичный индекс на автоинкремент, потом IndexDefs.Add(...) - вторичный, и потом .CreateTable?
← →
Anatoly Podgoretsky (2002-08-09 10:10) [6]Leran2002 © (09.08.02 07:01)
Ты думаешь, а крики постоянно по этому поводу, надо использовать не парадоксальые форматы, там все в порядке.
Вариант с необслуживаемыми индексами как правило подходит только для СД
← →
Mike Kouzmine (2002-08-09 10:13) [7]Кричат инвалиды, кто работает и у кого работает - молчат.
← →
Leran2002 (2002-08-09 10:20) [8]
> Anatoly Podgoretsky © (09.08.02 10:10)
Но почему же эти индексы удобно использовать, т.к. каждая запись будет уникальна, а это уже дает многое если хорошо подумать...
← →
Anatoly Podgoretsky (2002-08-09 10:42) [9]Leran2002 © (09.08.02 10:20)
Удобно, вот только без первичного ключа не работает, и на первичный ключ странные ограничения.
← →
Mike N. Radoman (2002-08-09 11:19) [10]Блин, я уже совсем запутался - первичный индекс создается, а вот вторичный - как до CreateTable, так и после - нет. Либо просто не добавляется, либо пишет экспешн - Index does not exist. Так в чем проблема все-таки? Будь моя воля - не использовал Paradox ни в жисть - но надо :(
← →
Anatoly Podgoretsky (2002-08-09 11:25) [11]В твоем коде, который ты скрываешь
← →
Leran2002 (2002-08-09 14:36) [12]
> Anatoly Podgoretsky © (09.08.02 11:25)
Да не спроста наверное его назвали PARADOX, ой не спроста... ;-))
← →
Mike N. Radoman (2002-08-09 15:44) [13]Я и так знаю, что в коде.
А что код - что там скрывать-то... Вот он:
DatabaseName:= ExtractFilePath(Application.ExeName);
TableName:= "Test";
FieldDefs.Clear;
FieldDefs.Add("ID", ftAutoInc, 0, True);
FieldDefs.Add("FirstField", ftString, 50, True);
FieldDefs.Add("SecondField", ftString, 50, True);
IndexDefs.Clear;
IndexDefs.Add("", "ID", [ixPrimary]);
CreateTable;
Exclusive:= True;
Open;
AddIndex("Second", "SecondField", []);
И вот на месте создания вторичного индекса ругается.
← →
Leran2002 (2002-08-09 16:02) [14]// - значит можно и там и там и там...
with Table1 do
begin
DatabaseName:= ExtractFilePath(Application.ExeName);
TableName:= "Test";
FieldDefs.Clear;
FieldDefs.Add("ID", ftAutoInc, 0, True);
FieldDefs.Add("FirstField", ftString, 50, True);
FieldDefs.Add("SecondField", ftString, 50, True);
IndexDefs.Clear;
IndexDefs.Add("", "ID", [ixPrimary]);
// AddIndex("Second", "SecondField", [ixCaseInsensitive]);
CreateTable;
// AddIndex("Second", "SecondField", [ixCaseInsensitive]);
Exclusive:= True;
Open;
// AddIndex("Second", "SecondField", [ixCaseInsensitive]);
end;
← →
Leran2002 (2002-08-09 16:07) [15]procedure AddIndex(const Name, Fields: String; Options: TIndexOptions, const DescFields: String="");
TIndexOption = (ixPrimary, ixUnique, ixDescending, ixCaseInsensitive, ixExpression, ixNonMaintained);
TIndexOptions = set of TIndexOption;
В общем почитай в Хелпе о этом, я проверял когда используешь только [] то вылетает ошибка...
Вот пример из Хелпа:
Table1.AddIndex("NewIndex", "CustNo;CustName", [ixUnique, ixCaseInsensitive]);
← →
Mike N. Radoman (2002-08-12 15:01) [16]2 Leran2002 ©: Спасибо, ща буду пробовать.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.09.02;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.008 c