Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Порядковый номер ... Ado\ Access 
:(
    Опции темы
HAS
Дата 2.5.2005, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ing
*


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

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



Здравствуйте ! smile
Я вновь обращаюсь к Вам за помошью, с надеждой что хоть кто-нибудь мне поможет !
Значит использую DBGrid. Он отображает содежимое msaccess. Там имеется счетчик. Если допутим я удалю последнюю запись (допустим 10-ую запись), а затем добавляю новую, то она уже идет под номером 11, (т.е. 1 2 3 4 5 6 7 8 9 11) вот никак не могу разбраться. Посоветуйте что сделать !

Спасибо ! smile

PM MAIL   Вверх
Vit
Дата 2.5.2005, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


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

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



И пусть себе идёт... Автоинкремент - гарантирует уникальность номера в пределах таблицы, ничего менять не надо


--------------------
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   Вверх
Zero
Дата 2.5.2005, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Vit а что будешь делать, если кол-во записей очень большое, но при этом известно что, удаляются они тоже в большом кол-ве???
Я лично у себя в курасаче вообще тип счётчик не использовал, я там заместо этого ставил числовой тип, а в случае удаления записи, все последующие в цикле на одну уменьшал. Конечно при большом кол-ве записей это тоже не лучший способ, но зато переполнение разрядной сетки менее вероятно.
Добавлено @ 23:59
Ну конечно же ещё каскадное обновление было установлено.
PM MAIL ICQ   Вверх
Alex
Дата 3.5.2005, 00:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Zero @ 3.5.2005, 00:57)
Vit а что будешь делать, если кол-во записей очень большое, но при этом известно что, удаляются они тоже в большом кол-ве???
Я лично у себя в курасаче вообще тип счётчик не использовал, я там заместо этого ставил числовой тип, а в случае удаления записи, все последующие в цикле на одну уменьшал. Конечно при большом кол-ве записей это тоже не лучший способ, но зато переполнение разрядной сетки менее вероятно.

Если БД многопользовательская то тем самым ты вырыл себе БОЛЬШУЮ яму, в которую обязательно рухнешь. Я просто четко представляю, что ты наверняка при добавлении новой записи проверяешь, а нет ли у тебя ранее использованных идентификаторов, но уже удаленных. А теперь представь, что два пользователя приблизительно в один и тот же момент времени захотели добавить запись. Программа обращается к базе и получает свободный идентификатор и есть вероятность, что полученный идентификатор будет одинаковый полученный программой у первого и у второго пользователя. А если это произошло, то все, кто-то не сможет добавить запись. Счетчики ведут себя правильно и всегда возвращают новое значение.
Добавлено @ 00:57
Цитата(Zero @ 3.5.2005, 00:57)
все последующие в цикле на одну уменьшал.

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


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Bes
Дата 3.5.2005, 08:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Я долго бился над подобной проблемой и пришел к выводу. что кроме как формировать номера непосредствнно перед выводом в грид вариантов мало, по крайней мере стандартными способами этого не сделать. smile
PM MAIL   Вверх
innok
Дата 3.5.2005, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



как правило счетчики используются для внутренних нужд базы(первичные ключи для связи таблиц). Если нужны номера, которые можно редактировать - создайте еще одно поле. И колбасьте его как хотите. smile . А первичные ключи лучше не трогать.Они сделаны не для этого.
PM MAIL   Вверх
Bes
Дата 3.5.2005, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



2innok: Да нет, ятак понимаю, что нужно просто пронумеровать строки как в Акцессе, чтобы пользователь как-то ориентировался в списке.
PM MAIL   Вверх
innok
Дата 3.5.2005, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Bes
И я про то же. Не надо использовать индексное ключевое поле для того, что ему не предназначалось.
PM MAIL   Вверх
Zero
Дата 4.5.2005, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Alex @ 3.5.2005, 00:53)
Если БД многопользовательская то тем самым ты вырыл себе БОЛЬШУЮ яму

Alex не буду спорить, насчёт многопользовательского варианта, обсалютно согласен, но
Цитата(HAS @ 2.5.2005, 16:08)
отображает содежимое msaccess.

на сколько мне помнится, то access однопользовательская СУБД, и я имел ввиду для конкретного случая.
Хотя, впринципе можно оставить всё как есть, а потом через определённый переиод, администратору БД обновлять БД, т.е. уменьшать кол-во разрядов, и т.п.
Цитата(Alex @ 3.5.2005, 00:53)
Я просто четко представляю, что ты наверняка при добавлении новой записи проверяешь, а нет ли у тебя ранее использованных идентификаторов, но уже удаленных.

Неа, неугадал smile , у меня просто присваевается для новой записи, номер последней записи плюс единица, и всё. Всё гораздо проще чем ты думаешь, без всяких условий. smile

Это сообщение отредактировал(а) Zero - 4.5.2005, 19:01
PM MAIL ICQ   Вверх
Akina
Дата 4.5.2005, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


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

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



Цитата(Zero @ 4.5.2005, 20:01)
у меня просто присваевается для новой записи, номер последней записи плюс единица, и всё. Всё гораздо проще чем ты думаешь, без всяких условий.

а следовательно при удалении все бОльшие лопатятся на предмет "минус один" - и все ради чего? сродни онанизму... тем более что достаточно изменить сортировку, чтобы вся твоя статическая нумерация полетела ко всем чертям... на то и РЕЛЯЦИОННЫЕ БД - там в принципе нет понятие физического номера записи...
Кстати, в запросе БД имеет полное право возвратить несортированный по ключевому полю список, если сортировка не задана явно - это так, к слову...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Bes
Дата 5.5.2005, 08:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



2Akina: Ну и что делать? smile
PM MAIL   Вверх
Akina
Дата 5.5.2005, 08:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


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

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



Bes
Нужна нумерация строк при выводе - делай ее именно при выводе. Т.е. вводи в макет формы/отчета вычисляемое поле (надпись) и там считай-показывай текущий нумер.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Bes
Дата 5.5.2005, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



2Akina: Вычисляемым полем не получится, нужно именно резервировать под это дело поле и заполнять его непосредственно перед выводом набора данных если что-то удалил или пересортировал - перезаполни.
PM MAIL   Вверх
Akina
Дата 5.5.2005, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


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

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



Цитата(Bes @ 5.5.2005, 13:59)
Вычисляемым полем не получится

Цитата(Bes @ 5.5.2005, 13:59)
если что-то удалил или пересортировал - перезаполни

А тогда какой смысл его ХРАНИТЬ???


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Bes
Дата 5.5.2005, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



2Akina: а как по другому сделать?
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.0595 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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