Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Таблицы Paradox, индексирование 
:(
    Опции темы
dser
Дата 20.2.2003, 06:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 3.2.2003
Где: Украина Харьковск ая обл.

Репутация: нет
Всего: нет



Во время работы приложения выпадает сообщение о нарушении индекса. Таблица Paradox 7.0 имеет семь индексов (включительно с первичным). В этом случае нужна ли реиндексация или требуется удалить все индексы, а затем их заново создать. И еще: как создать первичный ключ описание есть, а как удалить первичный ключ описания нет - подскажите кто-нибудь.
Vit посоветовал удалить все файлы с диска кроме *.DB. Как все это сделать програмно, я не имею ввиду совет Vit`a.
PM MAIL   Вверх
Medved
Дата 20.2.2003, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Это пример из моей программы, сокращать не стал, если будут вопросы, спрашивай.

Код

 with fLogo do begin
   if bool
     then begin
       lfirst.caption := 'Осуществляется первый запуск приложения';
       lfirst.visible := true;
       try
         Application.ProcessMessages;
         lload.Caption := 'Соединение с базой данных..';
         Application.ProcessMessages;
         fdm.DPhone.Connected := True;


         fDM.tTel.Exclusive := true;
         lload.Caption := 'Откртие таблицы физических лиц..';
         Application.ProcessMessages;

         fDM.tTel.Open;

         lload.Caption := 'Создание индексного файла для таблицы физических лиц...';
         Application.ProcessMessages;
         fDm.tTel. AddIndex('Phone','Phone', [ixCaseInsensitive]);
         fDm.tTel.AddIndex('Name','Name', [ixCaseInsensitive]);
         fDm.tTel.AddIndex('Street','Street;Home;Kvr', [ixCaseInsensitive]);
         fDm.tTel.Close;
         fDM.tTel.Exclusive := false;
       except
         fDm.tTel.Close;
         fDM.tTel.Exclusive := false;
         MessageBox(0,PChar('Не могу создать индексные файлы для таблицы телефонных номеров физических лиц!'+#13+'Приложение вынуждено завершить свою работу.'),'Критическая ошибка', MB_OK+MB_ICONERROR);
         exit;
       end;

         fDM.tOrg.Exclusive := true;
         Application.ProcessMessages;
         lload.Caption := 'Откртие таблицы юридических лиц...';
         Application.ProcessMessages;
         fDM.tOrg.Open;

       try
         lload.Caption := 'Создание индексного файла для таблицы юридических лиц...';
         Application.ProcessMessages;
         fDm.tOrg.AddIndex('Phone','Phone', [ixCaseInsensitive]);
         fDm.tOrg.AddIndex('OrgName','OrgName', [ixCaseInsensitive]);
         fDm.tOrg.AddIndex('Street','Street;Home', [ixCaseInsensitive]);
         fDm.tOrg.Close;
         fDM.tOrg.Exclusive := false;
       except
         fDm.tOrg.Close;
         fDM.tOrg.Exclusive := false;
         MessageBox(0,PChar('Не могу создать индексные файлы для таблицы телефонных номеров юридических лиц!'+#13+'Приложение вынуждено завершить свою работу.'),'Критическая ошибка', MB_OK+MB_ICONERROR);
         exit;
       end;

       try
         lload.Caption := 'Откртие таблицы телефонных номеров физических лиц...';
         Application.ProcessMessages;
         fDM.tTel.Open;
       except
         MessageBox(0,PChar('Не могу открыть таблицу телефонных номеров физических лиц!'+#13+'Приложение вынуждено завершить свою работу.'),'Критическая ошибка', MB_OK+MB_ICONERROR);
         Application.Terminate;
       end;
       Reg.WriteString('First', 'false');
       Reg.CloseKey;
       Reg.Free;
       lfirst.visible := false;
     end
     else begin
       try
         lload.Caption := 'Откртие таблицы телефонных номеров юридических лиц...';
         Application.ProcessMessages;
         fDM.tTel.Open;
       except
         MessageBox(0,PChar('Не могу открыть таблицу телефонных номеров юридических лиц!'+#13+'Приложение вынуждено завершить свою работу.'),'Критическая ошибка', MB_OK+MB_ICONERROR);
         exit;
       end;
     end;
 end;  //with


Два важных момента.

1) таблица должны бать открыта в эксклюзивном режиме (fDM.tTel.Exclusive := false);
2) 2) в моем примере, я создаю вторичные индексы. но если все создавать с нуля (т.е. предварительно будут удалены индексные файлы Paradox (*.PX, и т.д.), то в первую очередь необходимо создать уникальный первичный индекс.

Индексные файлы удалять не требуется в том случае, если ты хочешь просто их пересоздать.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
dser
Дата 24.2.2003, 07:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 3.2.2003
Где: Украина Харьковск ая обл.

Репутация: нет
Всего: нет



Выпадает сообщение о повреждении первичного индекса. Как мне "отремонтировать" его. Я полагаю, что нужно индеск сначала удалить, а затем создать заново. Создать могу, а как удалить? Вот в чем вопрос.
В ответе Pegas`а я не нашел ответа на свой вопрос. Извинете!
PM MAIL   Вверх
Vit
Дата 25.2.2003, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Именно так как я и предлагал.

1) Закрываем все таблицы
2) sesion.active:=false;
3) програмно удаляем все файлы кроме DB
4) sesion.active:=true;
5) Создаём повторно ключи и индексы




--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Medved
Дата 25.2.2003, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



А чем это не ответ:
Цитата
2) в моем примере, я создаю вторичные индексы. но если все создавать с нуля (т.е. предварительно будут удалены индексные файлы Paradox (*.PX, и т.д.), то в первую очередь необходимо создать уникальный первичный индекс.


А как "но если все создавать с нуля (т.е. предварительно будут удалены индексные файлы Paradox (*.PX, и т.д.)" Vit уже объяснил...



--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0447 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.