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

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

Как сбросить (обнулить) поле типа "автономер" в БД Paradox? [D6, Paradox]


Страницы:   1 2

Vlad2 ©   (2005-09-16 11:23:00) 

В Парадоксе автономер целого типа, поэтому значение его ограничено, и периодически его надо сбрасывать, т.е. чтобы он присваивался сначала. Как можно сделать это программно в любой момент, не дожидаясь предела?
Спасибо.


Виталий Панасенко   (2005-09-19 11:28:00) [1]

Нет, не обнуляется...


Anatoly Podgoretsky   (2005-09-19 10:49:00) [2]

Виталий Панасенко   (19.09.05 10:45) [21]
По непровереным данным, для Парадокса при EmptyTable? производится обнуление автоинкримента. Почему по непроверенным, а потому что я никогда не пойду на Парадокс, а применю скажем dBase или что то другое, например Акцесс, хоть и не лежит к нему душа.


Виталий Панасенко   (2005-09-19 10:45:00) [3]

Кажись это
> Если копировать не требуется, то EmptyTable

не поможет. CreateTable


Vlad2   (2005-09-18 22:22:00) [4]

Спасибо большое за помощь. Так и сделаю.


Anatoly Podgoretsky   (2005-09-16 18:23:00) [5]

Создавай новую таблицу и копируй туда нужные данные. Если копировать не требуется, то EmptyTable


Vlad2   (2005-09-16 17:00:00) [6]

Anatoly Podgoretsky ©   (16.09.05 16:31) [17]
Может быть, и за пол-года. Задача оперативная, работает круглосуточно в режиме удаления/добавления. В зависимости от интенсивности срок может быть и больше полугода и меньше. Сама база относительно небольшая, периодически реструктуризируется (DbiDoRestructure), поэтому парадокс и держится. Конечно, мы сознаём, что это далеко не лучший вариант, но до другого пока руки не доходят. А 4 млрд нам тоже сначала казалось нереальным :-).

Кстати, доп. вопрос: можно ли убить поле в заполненной базе, а потом опять образовать  (программно)?

Спасибо всем.


Anatoly Podgoretsky   (2005-09-16 16:31:00) [7]

Ты хочешь сказать что за 3 месяца в таблицу добавляется 4 миллиарда записей и столько же удаляется, не поверю. Не того маштаба Парадокс что бы подобное тянуть.


Vlad2   (2005-09-16 16:26:00) [8]

Anatoly Podgoretsky ©   (16.09.05 16:03) [15]

Как я писал, - за несколько (3-4) месяцев. Но перенумерация нужна чаще и по другим (алгоритмическим) причинам в чужих программах, которые (эти причины) я устранить не могу. Спасибо.


Anatoly Podgoretsky   (2005-09-16 16:03:00) [9]

Достиг ли у тебя этот номер значения 40 000 000? Если достиг то за какое время, затем можешь умножить на 100
И конечно база раньше прекратит жить.


Val   (2005-09-16 15:31:00) [10]

это без вариантов.


Vlad2   (2005-09-16 14:44:00) [11]

Anatoly Podgoretsky ©   (16.09.05 13:46) [11]
> Ты уже достиг хотя бы одного процента?
Процента чего?

К сожалению, при добавлении записей значение автономера только увеличивается, а не принимает отсутствующие (после удаления) номера.

Виталий Панасенко   (16.09.05 14:23) [12]
> Если задача однопользовательская (для безопасности)
Этот номер используется и другими пользователями и другими задачами.
Использовать RecNo не могу, т.к. он изменится, если я сделаю другую выборку по базе.

Я благодарен всем откликнувшимся, и понимаю так, что нет способа, кроме перестроения базы, программно перенумеровать автономер.


Виталий Панасенко   (2005-09-16 14:23:00) [12]

Если задача однопользовательская (для безопасности), то
> Смысла в таком поле, ИМХО, немного. RecNo дублируешь?

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


Anatoly Podgoretsky   (2005-09-16 13:46:00) [13]

Vlad2   (16.09.05 11:23)  
Ты уже достиг хотя бы одного процента?


Vlad2   (2005-09-16 13:29:00) [14]

Это поле имеет вспомогательное значение - "окрашивает" записи для дальнейшего использования значений других полей в вычислительном комплексе (научная задача). Поэтому удобно, чтобы это делалось в автомате, чтобы я не заботился об уникальности его значения.
Периодически (раз в несколько месяцев) достигается предел значений, хотя база не очень большая (от нескольких тасяч до нескольких ( редко 2-3) сотен тыс. записей), но находится в интенсивном режиме модификаций (удаления и добавления). Просто хотелось снять эту проблему, чтобы значения автономера обновлялись сами при превышении какого-то порога.


Sergey13   (2005-09-16 12:39:00) [15]

2[5] Vlad2   (16.09.05 11:59)
>Например, в базе 1000 записей, автономер - от 0 до 999.
И он достиг мыслимого предела.

>Первые 500 записей удалил, оставшиеся имеют номера с 500 до 999. Хочу, чтобы они имели номера с 0 по 499 (наверное, имею право :).
Смысла в таком поле, ИМХО, немного. RecNo дублируешь?


Val   (2005-09-16 12:36:00) [16]

а если удалял не первые 500, а через одну? или всего одну, 2, 3? что предполагается делать?


Виталий Панасенко   (2005-09-16 12:19:00) [17]

autoinc на то и autoinc, что сам по себе живет... Тогда используй Integer поле.. а то это как-то не логично получается... по определению поле так себя и должно вести (все время увеличиваться на 1).. а ты старешься его "заломать"...


Johnmen   (2005-09-16 12:14:00) [18]

>Хочу, чтобы они имели номера с 0 по 499 (наверное, имею право :).

Право имеешь. Вот только смысл этого действа ? Обоснуй.


Vlad2   (2005-09-16 11:59:00) [19]

Спасибо за реакцию. Важное примечание: автономер - не в первичном ключе.
Например, в базе 1000 записей, автономер - от 0 до 999. Первые 500 записей удалил, оставшиеся имеют номера с 500 до 999. Хочу, чтобы они имели номера с 0 по 499 (наверное, имею право :).
Конечно, можно формально в Desktop'е удалить это поле и опять ввести, получится то, что мне надо. Но можно ли сделать это программно, в run-time, без перестройки (Create) базы?


Max Zyuzin   (2005-09-16 11:51:00) [20]

>Виталий Панасенко   (16.09.05 11:31) [3]
Только в таком случае парадок рухнет думается раньше...


Страницы:   1 2

Наверх

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