Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Builder C++

15K
08 февраля 2006 года
liza1234
6 / / 08.02.2006
Проблема с программным созданием индексов в таблице. БД ACCESS. Необходимо программно создать индекс и отсортировать по нему. Индекс создается, но при сортировке по этому индексу, программа выдает ошибку о том, что данный индекс не существует. Заранее спасибо.
1
08 февраля 2006 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by liza1234
Проблема с программным созданием индексов в таблице. БД ACCESS. Необходимо программно создать индекс и отсортировать по нему. Индекс создается, но при сортировке по этому индексу, программа выдает ошибку о том, что данный индекс не существует. Заранее спасибо.


для работы с базой в билдере можно использовать как минимум три технологии и куеву тучу компонентов.
Что используется для работы с базой - как происходит обращение к индексу - какой компонент выдает ошибку - кто должен об этом догадаваться?

15K
08 февраля 2006 года
liza1234
6 / / 08.02.2006
Цитата:
Originally posted by kot_
для работы с базой в билдере можно использовать как минимум три технологии и куеву тучу компонентов.
Что используется для работы с базой - как происходит обращение к индексу - какой компонент выдает ошибку - кто должен об этом догадаваться?

15K
08 февраля 2006 года
liza1234
6 / / 08.02.2006
Программа связывается с БД через ODBC. Таблица созданная в ACCESS имеет индексы. Но при доработке программы возникла необходимость в создании нового индекса, т.к. Компонент TTABLE производит сортировку только по индексированному полю. Индекс создается
Table1->IndexDefs->Update();
Table1->IndexDefs->Add("DATA_VYDACH","DATA_VYDACH",TIndexOptions());

Но на сортировке
Table1->IndexName="DATA_VYDACH";

Программа выдыет ошибку, что данный индекс не существует
585
08 февраля 2006 года
honeybeer
297 / / 06.09.2004
если Table1 это TTable, то это не ODBC а BDE.
1
08 февраля 2006 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by liza1234
Программа связывается с БД через ODBC. Таблица созданная в ACCESS имеет индексы. Но при доработке программы возникла необходимость в создании нового индекса, т.к. Компонент TTABLE производит сортировку только по индексированному полю. Индекс создается
Table1->IndexDefs->Update();
Table1->IndexDefs->Add("DATA_VYDACH","DATA_VYDACH",TIndexOptions());

Но на сортировке
Table1->IndexName="DATA_VYDACH";

Программа выдыет ошибку, что данный индекс не существует


 
Код:
Table1->AddIndex("NumberName", "CustNo;CustName", TIndexOptions() << ixUnique << ixCaseInsensitive);
15K
08 февраля 2006 года
liza1234
6 / / 08.02.2006
Написала код
Table1->Active=false;
Table1->Exclusive=true;
Table1->AddIndex("DDD", "DATA_VYDACH", TIndexOptions() << ixDescending);

DATA_VYDACH - имя поля в БД
DDD - имя нового индекса


На 3 операторе выдает ошибку

class EDBEngineError Key violation.

Может я чего нибудь недопонимаю ???
1
08 февраля 2006 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by liza1234
Написала код
Table1->Active=false;
Table1->Exclusive=true;
Table1->AddIndex("DDD", "DATA_VYDACH", TIndexOptions() << ixDescending);

DATA_VYDACH - имя поля в БД
DDD - имя нового индекса


На 3 операторе выдает ошибку

class EDBEngineError Key violation.

Может я чего нибудь недопонимаю ???


Код нормально работает и никаких ошибок не выдает(естественно если проверять наличие индекса перед его созданием). Твою ошибку возпроизвести не удалось. Возможно ты сталкиваешься с проблемой в самой базе - например если на данное поле уже установлен индекс и некоторые значения не удовлетворяют условию.

15K
08 февраля 2006 года
liza1234
6 / / 08.02.2006
ДЕЛАЮ ПРОВЕРКУ - ИНДЕКСА ТАКОГО НЕТ. В бд ПОЛЕ ИМЕЕТ ФОРМАТ - ДАТА и оно не индексировано.

Если же для проверки в ACCESS создаю это индекс, а не программно , то программа выполняет сортировку нормально.
1
08 февраля 2006 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by liza1234
ДЕЛАЮ ПРОВЕРКУ - ИНДЕКСА ТАКОГО НЕТ. В бд ПОЛЕ ИМЕЕТ ФОРМАТ - ДАТА и оно не индексировано.

Если же для проверки в ACCESS создаю это индекс, а не программно , то программа выполняет сортировку нормально.


А в базе изначально присутствуют какие либо индексы кроме создаваемого?
З.Ы. И не кричи плиз.

1
08 февраля 2006 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by kot_
А в базе изначально присутствуют какие либо индексы кроме создаваемого?
З.Ы. И не кричи плиз.


Проверяй внимательно данные - судя по всему причина ошибки - в них.
Подобную ошибку мне удалось получить для индекса данные по которому не соответстветствуют критериям.

1
08 февраля 2006 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by kot_
Проверяй внимательно данные - судя по всему причина ошибки - в них.
Подобную ошибку мне удалось получить для индекса данные по которому не соответстветствуют критериям.


Или попробуй не устанавливать для индекса параметры - посмотри что скажет.

15K
10 февраля 2006 года
liza1234
6 / / 08.02.2006
СПАСИБО ! ВСЕ ПОЛУЧИЛОСЬ
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог