![]() |
|
|
![]()
|
|
| PaWeLL |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 16.11.2009 Репутация: нет Всего: нет |
Появился вопрос. Есть таблица personal_inf, в которой хранятся данные о работниках. У каждого есть идентфикатор w_id.
Есть форма добавления записей в таблицу. Нужно, чтобы при загрузке формы в поле "Номер сотрудника" выводилось первое незанятое значение w_id. Как такое реализовать? |
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 35 Всего: 130 |
Если w_id уникален и идёт по порядку, то взять максимальное его значение (select max w_id from table) и прибавить 1. -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| PaWeLL |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 16.11.2009 Репутация: нет Всего: нет |
Это я уже обдумал. Но мне хочется посложнее. Допустим в результате удаления оказался свободен один id 0015 0016 0018 0019 Так вот, надо чтобы выводился не 0020, а первый свободный 0017. |
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 35 Всего: 130 |
Тогда в цикле проходить (только сколько это по времени займёт) и искать соседние строчки, разница w_id между которыми больше единицы. Добавлено через 2 минуты и 42 секунды Но только не знаю, зачем это практически может быть нужно. Если требуется уникальное поле-идентификатор сотрудника, так обычное автоинкрементное поле отлично для этого подойдёт. -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| PaWeLL |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 16.11.2009 Репутация: нет Всего: нет |
То есть очень сложно получается, не по моим навыкам?
А подробнее можно про это? А то я пока нуб в этом деле. Да, кстати, забыл упомянуть. База данных - paradox. Это сообщение отредактировал(а) PaWeLL - 16.11.2009, 11:47 |
||||
|
|||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 35 Всего: 130 |
Почему сложно? Просто по времени такой цикл будет работать долго - в зависимости, конечно, от числа записей в таблице. Я про "Парадокс" ничего не знаю, никогда с ним не работал. Но вот в Access есть поле типа "счётчик", и значения в нём всегда уникальные, генерируемые самой СУБД. В FireBird есть генераторы для той же цели. Это сообщение отредактировал(а) Данкинг - 16.11.2009, 11:54 -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| former |
|
|||
![]() MEMS Expert ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1166 Регистрация: 1.3.2006 Где: Россия Репутация: 7 Всего: 17 |
Данкинг, ну а как быть если номер мы этот получили, заполняем форму, а в этот момент еще куча пользователей добавило записей? Такой способ подходит только если номер присваивается в триггере или процедуре непосредственно при сохранении данных. В данном случае (если бы речь не шла про Paradox) нужно получать значение с помощью генератора. PaWeLL, бросай Paradox. Технология бесперспективная. Лучше уж Access. Не нужно мерить задачу по себе. Так ты мало чего добьешься. -------------------- Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами. |
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 35 Всего: 130 |
Я об этом не подумал, я конкретную задачу решал. -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 23 Всего: 54 |
Для сетевого варианта только Генератры (firebird) или их аналоги в других СУБД. только они гарантируют уникальность, а максимум или последнее значение в списке могут привести к коллизии номеров.
Добавлено через 1 минуту и 37 секунд поменяй СУБД пока не поздно..намучаешься ты с парадоксам -------------------- Кольцов Виктор Владимирович |
|||
|
||||
| PaWeLL |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 16.11.2009 Репутация: нет Всего: нет |
Ну у меня БД не сетевая, поэтому не страшно. Добавлено через 1 минуту и 26 секунд
Можешь хотя бы намекнуть, как это должно выглядеть? Добавлено через 8 минут и 43 секунды
Я бы может и поменял, на задание определено четко: Delphi+paradox. |
||||
|
|||||
| Frees |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 23 Всего: 54 |
суть такова
Добавлено @ 14:08
меняй задание Это сообщение отредактировал(а) Frees - 16.11.2009, 14:10 -------------------- Кольцов Виктор Владимирович |
||||
|
|||||
| Deniz |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 8 Всего: 44 |
Можно и select'ом выбрать
Это сообщение отредактировал(а) Deniz - 16.11.2009, 14:46 -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
| PaWeLL |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 16.11.2009 Репутация: нет Всего: нет |
Всем спасибо. С вопросом разобрался.
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |