Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как получить свободное значение ключа? / 11 сообщений из 11, страница 1 из 1
05.05.2009, 13:14
    #35969036
Arthur26
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить свободное значение ключа?
Здравствуйте,
Есть таблица Access с полями Ключ, ФИО (0001, Иванов Иван Иванович).
Как программно узнать свободное значение ключа? Например значения такие: 0001, 0002, 0004, 0005. При добавлении новой записи, хотелось бы чтобы не к максимальному (0005) прибавить 1 для значения следующей записи, а сначала если есть свободное значение (0003).
Заранее спасибо.
...
Рейтинг: 0 / 0
05.05.2009, 13:21
    #35969061
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить свободное значение ключа?
в акцессе , только добавление новой записи и выполнения потом запроса примерно такого:

Код: plaintext
SELECT TOP  1  ID FROM TABLE1 ORDER BY ID DESC

ID - поле автоинкремент

ЗЫ
а вообще вам лучше свой синтетический ключ сделать, раз вы такие вопросы задаете. не трогайте поле ключа, он не для целей нумерации документов =)
...
Рейтинг: 0 / 0
05.05.2009, 13:39
    #35969139
Arthur26
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить свободное значение ключа?
Спасибо Konst_One, я знаю как определить следующее максимальное значение. Но мне надо сначала определить свободное значение из имеющихся значений (0001, 0002, 0004, 0005).
0003!!!
...
Рейтинг: 0 / 0
05.05.2009, 14:04
    #35969261
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить свободное значение ключа?
Код: plaintext
1.
2.
3.
4.
5.
6.
select
  min(t1.id)
from
  table t1
left join table t2 on t2.id = t1.id +  1 
where
  t2.id is null

PS: но так лучше не делать
что произойдет, если сразу несколько пользователей захотят добавить новую запись?
у меня подобные случаи были, полный п...ец

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
05.05.2009, 15:11
    #35969583
Arthur26
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить свободное значение ключа?
HandKot, таблица одна и поле текстовое (хранит коды абонентов: 0001, 0002)
...
Рейтинг: 0 / 0
05.05.2009, 15:15
    #35969600
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить свободное значение ключа?
мда, проектировщик ...
надеюсь хоть добавление/обновление/удаление данных этой таблицы происходит через отдельные команды, тогда еще что-то можно придумать, а если прям в табличной форме, то ковыряться вам с событиями OnRowChange и тп на форме
...
Рейтинг: 0 / 0
05.05.2009, 15:25
    #35969664
Arthur26
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить свободное значение ключа?
Konst_Oneмда, проектировщик ...
надеюсь хоть добавление/обновление/удаление данных этой таблицы происходит через отдельные команды, тогда еще что-то можно придумать, а если прям в табличной форме, то ковыряться вам с событиями OnRowChange и тп на форме

1) Data1.Recordset.AddNew
2) Data1.Recordset.Update
3) Data1.Recordset.Delete

Этими командами выполняю добавление/обновление/удаление данных.
...
Рейтинг: 0 / 0
05.05.2009, 15:27
    #35969673
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить свободное значение ключа?
вот перед этими действиями и ищите дырки в нумерации по вашему полю в клонированном рекордсете
...
Рейтинг: 0 / 0
05.05.2009, 15:34
    #35969699
Arthur26
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить свободное значение ключа?
Искать дырки с помощью цикла /for next/? А можно получить это значение с помощью запроса?
...
Рейтинг: 0 / 0
05.05.2009, 15:36
    #35969712
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить свободное значение ключа?
запрос выше уже вам дали, добавьте туда преобразование своего поля к цифровому типу
...
Рейтинг: 0 / 0
05.05.2009, 16:00
    #35969809
Arthur26
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить свободное значение ключа?
Большое спасибо, с помощью этого запроса и получилось.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как получить свободное значение ключа? / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]