Поиск:

Ответ в темуСоздание новой темы Создание опроса
> База данных, autoincrement в Paradox-таблицах 
:(
    Опции темы
ДЫМ
Дата 8.10.2004, 01:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 224
Регистрация: 6.1.2004

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



А что ты все-таки не хочешь переиндексировать таблицу, во всех серьезных программах, что я видел (в том числе и 1С), переиндексация присутствует. Да и вряд ли поле переполнится, наверняка оно поддерживает 64-разрядные целые, сколько же надо модифицировать таблицу (удалять, добавлять записи), чтобы число автоинкремента достигло максимума? Еще один нюанс - а ну как по этому полю установлена связь с другими таблицами, тогда при модификации автоинкремента надо модифицировать соответствующие поля в подчиненных наборах, можно такого наворотить...
PM MAIL WWW   Вверх
_hunter
Дата 8.10.2004, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



MacTep, исправить не получится ( это все же не ошибка smile.gif ), но могу посоветовать написать простенькую UDF ( не знаю только есть ли они в Парадоксе ( если нет -- меняй базу smile.gif ) ), которая будет генерировать индекс ( его сделать простым интом / инт64 )
хотя переиндексацию делать всеравно придется: удаление записей


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
MacTep
Дата 8.10.2004, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

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



Так вы мне объясните, как делается переиндексация? Приведите, пожалуйста, хоть какой-то ходенький бедненький примерчик, а то все на словах и на словах!


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
ДЫМ
Дата 9.10.2004, 01:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 224
Регистрация: 6.1.2004

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



Самый простой путь (в DBase иного нет) для переиндексации - создай точно такую же таблицу(с той же структурой) программно или скопируй заранее подготовленную пустую и копируй записи в нее в цикле или через кверю.
PM MAIL WWW   Вверх
MacTep
Дата 9.10.2004, 07:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

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



а потом снова перегонять в мою первую основную таблицу?


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
Akella
Дата 9.10.2004, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



есть такое понятие, как упаковка таблиц
хотя значения в 4 млрд тебе хватит на многие годы, даже если добавлять записи в таблицу круглосуточно с интервалом в 1 сек то посчитай на сколько дестялетий хватит.
Если все-таки хочешь обнулять то держи код...


Код

в секцию uses включи DBE


Procedure TfmMain.PackTable(tLog:TTable);
var
 TblDesc: CRTblDesc;
//  rslt: DBIResult;
 Dir: string; //имеется в виду huge string т.е. {$H+}
 hDb: hDbiDb;
begin
 if tLog.Active then tLog.Active := False; //деактивиpуем TTable
 if not tLog.Exclusive then tLog.Exclusive:=True;
 SetLength(Dir, dbiMaxNameLen + 1);
 DbiGetDirectory(tLog.DBHandle, False, PChar(Dir));
 SetLength(Dir, StrLen(PChar(Dir)));
 DbiOpenDatabase(nil, nil, dbiReadWrite, dbiOpenExcl, nil, 0, nil, nil, hDb);
 DbiSetDirectory(hDb, PChar(Dir));
 FillChar(TblDesc, sizeof(CRTblDesc), 0);
 StrPCopy(TblDesc.szTblName, vDBPath+tLog.TableName);
 StrCopy(TblDesc.szTblType, szParadox);//BTW тут может и szDBase стоять
 TblDesc.bPack := TRUE;
 DbiDoRestructure(hDb, 1, @TblDesc, nil, nil, nil, False);
 DbiCloseDatabase(hDb);
end;

PM MAIL   Вверх
MacTep
Дата 10.10.2004, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

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



dsergey, а вот за это огромное спасибо! Отлично!



--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

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

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


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


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

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

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


 




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


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

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