Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.09.2014, 15:19   #1
aleksskay
Форумчанин
 
Регистрация: 20.12.2011
Сообщений: 102
По умолчанию Упорядочиваие номеров

Вот при удалении записей из набора данных у меня изменились
номер ключа ну порядковый номер? И как сделать, что при удалении записей все равно порядковый номер оставался правильным, то есть 1, 2,3, а не таким 1,10,33?
aleksskay вне форума Ответить с цитированием
Старый 20.09.2014, 17:00   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А зачем сохранять порядковый номер если всегда можно сделать сортировку в запросе?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.09.2014, 17:06   #3
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Да это "уникальное поля" думаю что это не нужно делать. Но если принципиально! не знаю у вас какой СУБД , на MS SQL можно "обнулить identity , после
Delete. "
Код:
create database T1
--------------------
create table tab1
(
 id int identity(1,1),
 name varchar(40)
);

-----------------------
insert into tab1(name)
       values('Хлеб'),
	        ('Сахар'),
	       ('Чай'),
	       ('Макарон')


-------------------------
select * from tab1
-------------------------
delete from tab1
DBCC CHECKIDENT (tab1, RESEED,  0) -- Обнулить поля " id int identity "
Что "порядковый номер оставался правильным" не знаю .

Последний раз редактировалось xxbesoxx; 20.09.2014 в 17:11.
xxbesoxx вне форума Ответить с цитированием
Старый 21.09.2014, 10:44   #4
aleksskay
Форумчанин
 
Регистрация: 20.12.2011
Сообщений: 102
По умолчанию вот окно

У меня такая ситуация вот даже если две записи все равно начинается с таких номеров.
Изображения
Тип файла: jpg Image рр.jpg (12.0 Кб, 110 просмотров)
aleksskay вне форума Ответить с цитированием
Старый 21.09.2014, 11:05   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

И что? Ключевое поле, о котором ты говоришь не для показа служит а для уникального описания записи.
Для чего тебе нужно показывать номера по порядку и какая у тебя СУБД?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.09.2014, 11:27   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

aleksskay, до тех пор, пока Вы не поймёте, что ЕДИНСТВЕННОЕ назначение уникального ключевого поля - это обеспечивать уникальность каждой записи (для возможности обращения к этой записи по ключу), дело у Вас не пойдёт.

Первичный ключ НЕ ПРЕДНАЗНАЧЕН для отображения пользователю.
(да, его иногда показывают. Но иногда и уж не для того, чтобы кто-то его собирал менял). Вот, зайдите в магазин (побольше). На ценниках есть артикул (кстати, он может быть и не цифровой). Его цель обеспечить идентификацию (однозначную) товара. Подряд он идёт или не подряд, или начинается в 931xxxxxxx - Вас, как пользователя - вообще не должно волновать.

Тоже самое и с БД - нужен порядковый номер, который не должен изменяться (ну, например, нумерация приказов по предприятию) - заводите ОТДЕЛЬНОЕ поле и творите в нём всё, что Вам нужно! (Кстати, номера приказов каждый год начинаются с единицы... )
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.09.2014, 23:11   #7
aleksskay
Форумчанин
 
Регистрация: 20.12.2011
Сообщений: 102
По умолчанию

Спасибо уяснил,значит если нужна нумерация нужно создать отдельное поле
aleksskay вне форума Ответить с цитированием
Старый 21.09.2014, 23:46   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Спасибо уяснил,значит если нужна нумерация нужно создать отдельное поле
Ага, а что с ним будете делать при удалении записи? Обновлять номера в куче других записей. Вообще-то для нумерации ни каких других полей не нужно, номера по порядку можно и нужно програмно генерировать каждый раз при отображении информации, ну или запросом, что обычно несколько сложней
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 21.09.2014 в 23:50.
Аватар вне форума Ответить с цитированием
Старый 22.09.2014, 17:34   #9
aleksskay
Форумчанин
 
Регистрация: 20.12.2011
Сообщений: 102
По умолчанию

Можете показать на коде как это сделать?
aleksskay вне форума Ответить с цитированием
Старый 22.09.2014, 19:12   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Можно, например, свойство датасета RecNo использовать.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массивы, удаление четных номеров, обнаружение максимальных номеров. Memorial Помощь студентам 2 18.10.2011 22:58
Вывод номеров с Unreasonable Value zenner Microsoft Office Excel 4 08.10.2010 13:20
БД телефонных номеров ElenaOrsk Общие вопросы Delphi 0 31.05.2009 12:25
Сортировчик номеров ildusfm Microsoft Office Excel 1 19.05.2009 13:38
Несколько номеров одновеременно Pavelok Работа с сетью в Delphi 1 14.05.2009 14:43