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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.09.2013, 06:04   #1
TeleSky
Пользователь
 
Регистрация: 02.01.2009
Сообщений: 41
По умолчанию Нумерация строк в базе данных!?

Здравствуйте, подскажите как быть, планирую создать программу на Delphi с базой данных Access, все получается вот только проблема с нумерацией строк, т.е. к примеру стоят строки с номерами 1,2,3,4,5 и если строка с номером 5 удаляется, то при создании новой строки она уже не становиться под номером 5, а уже под номером 6, и если смотреть по списку получается некорректно, возможно не один раз будут удаляться строки... Скажите можно ли этого как-то избежать...!? Сам материал по созданию программ с базой данных в Access я брал здесь: http://devdelphi.ru/?p=30 ... Спасибо!
TeleSky вне форума Ответить с цитированием
Старый 11.09.2013, 06:54   #2
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

Если тебе не нужно инкрементное поле, то не создавай его просто совсем.
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума Ответить с цитированием
Старый 11.09.2013, 07:25   #3
Vad33
Участник клуба
 
Аватар для Vad33
 
Регистрация: 24.07.2009
Сообщений: 638
По умолчанию

А если удалится строка с номером 2? А строки 3,4,5 то уже созданы!! Ужос!!

Отсюда и вывод, что номер строки - понятие динамическое.

т.е. его нужно или рассчитывать и не держать в таблице или перенумеровывать таблицу каждый раз как происходит удаление.
** Удача терпелива. **
Vad3333@inbox.ru
Vad33 вне форума Ответить с цитированием
Старый 11.09.2013, 07:27   #4
TeleSky
Пользователь
 
Регистрация: 02.01.2009
Сообщений: 41
По умолчанию

Мне нужно нумерования строк в базе, подскажите как их правильнее будет сделать нумерацию через Delphi или Access...!?
TeleSky вне форума Ответить с цитированием
Старый 11.09.2013, 07:29   #5
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

Зачем вообще нумеровать строки в базе данных? Нумеровать нужно при выборке, путём создания алиасов. Автоинкрементное индексное поле не нумерует, а считает строки. Именно поэтому оно и называется Счётчик. Благодаря этому полю осуществляется удобное и корректное редактирование записей с помощью sql запросов.

Есть ещё один вариант, но он тупой и медленный. После каждого удаления записи удалять и заново добавлять инкрементное индексное поле. Тогда все номера будут идти по порядку.

Только вот когда начнёшь делать серьёзные проекты, поймёшь, как ты ошибался, когда переопределял порядок индексов.
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru

Последний раз редактировалось grominfo; 11.09.2013 в 07:38.
grominfo вне форума Ответить с цитированием
Старый 11.09.2013, 07:46   #6
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

Код:
var
snumber:integer;
begin
snumber:=0;
ADOQuery1.sql.clear;
ADOQuery1.sql.Add('SELECT * FROM tablename ORDER BY id');
ADOQuery1.Open;
while not ADOQuery1.Eof do
  begin
    {.......}
     inc(snumber);
    ADOQuery1.Next;
  end;
end;
snumber - это и будет твоя нумерация
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума Ответить с цитированием
Старый 11.09.2013, 08:24   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Не обязательно в проге в цикле обновлять. Сделать вычисляемое поле и в OnCalcFields записать в него ADOQuery1.RecNo
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 11.09.2013, 08:31   #8
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

Цитата:
Сделать вычисляемое поле и в OnCalcFields записать в него ADOQuery1.RecNo
Чё-то про этот способ я и забыл.
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нумерация строк. Gefo PHP 8 21.02.2013 18:45
Нумерация строк в БД grom333 БД в Delphi 3 21.05.2011 18:51
нумерация строк strannik SQL, базы данных 1 19.05.2010 09:09
Нумерация строк ShnapS БД в Delphi 5 06.05.2009 20:59
Нумерация строк. QT 4 NikLik Qt и кроссплатформенное программирование С/С++ 2 18.12.2008 22:38