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

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

Index XXXX is not a valid name [D6, Paradox]


keeper ©   (2003-01-29 10:59:00) 

При создании новой таблицы:

ADOConnection2.Execute("create table temp_mvu (mvuid INTEGER, a VARCHAR(8),b VARCHAR(25),c VARCHAR(20),d VARCHAR(20), tip_kan VARCHAR(20),naim VARCHAR(60),n_vx VARCHAR(2),n_vyx VARCHAR(2),x_mod VARCHAR(4),kont VARCHAR(3),PRIMARY KEY(mvuid) );");

выдает ошибку:
[Microsoft][ODBC Paradox driver]"Index_00C7A10F_4D54_4A99" is not a valid name. Make sure it does not include invalid characters and punctuation and that it is not too long.
Если тот же SQL исполнить в database desktop все работает...
ADOConnection настроен нормально (открывать через него таблицы можно). В чем загвоздка?


sniknik   (2003-01-29 15:20:00) [1]

все ясно, лыжи едут... :о)))

создавай таблице без ключа (совсем), первой командой после создания делай
CREATE UNIQUE INDEX temp_mvu ON temp_mvu (mvuid)
получиш желаемое


Keeper   (2003-01-29 15:09:00) [2]

Из вот этого всего (1,2,3..7) следует что ИМЯ ПЕРВИЧНОГО КЛЮЧА ДОЛЖНО СОВПАДАТЬ С ИМЕНЕМ ТАБЛИЦЫ ?!? Если ДА, то НЕТ (Всмысле попробовал назвать первичный ключ по имени таблицы - ругается теми же словами).

Или лыжи не едут...или одно из двух... :(


Kuusiniemi   (2003-01-29 14:39:00) [3]

2 Johnmen ©> В вопросе сказано "Если тот же SQL исполнить в database desktop все работает". Стало быть дело не в этом. Читаем дальше: "ADOConnection настроен нормально" - стало быть проблема в ADO.

А вообще никто из вас не угадал. :) Эта проблема - ограничения ADO:
1. Для того, чтобы Вы имели возможность производить действия по добавлению, удалению записей или редактированию данных в таблице, таблица должна иметь первичный ключ.
2. Имя первичного ключа должно совпадать с названием таблицы, а имена индексов с именами полей
3. Первичный ключ должен быть определен для первых "n" полей таблицы.
4. Вы не можете создавать для таблицы индексы, если для нее не определен первичный ключ.
5. Первый создаваемый для таблицы уникальный индекс будет создан как первичный ключ.
6. Первичный ключ может быть создан для таблицы только в том случае, если в ней нет ни одной записи.
7. Действия по добавлению или удаления полей в таблице должны быть произведены до того, как для нее создан первичный ключ.

Источник - MSDN.

И по опыту: вы не можете удалить существующий первичный ключ, даже если в таблице нет ни одной записи.


Johnmen   (2003-01-29 14:17:00) [4]

Вообще говоря, чтобы построить первичный ключ по некоторому полю, оно д.б. NOT NULL
:)


Keeper   (2003-01-29 14:13:00) [5]

Пробовал все лишнее отрезать - оставлял пару столбцов - та же фигня... :(


MsGuns   (2003-01-29 12:01:00) [6]

Разрежь запрос на несколько строк.


Наверх

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