powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Программное создание поля Autonumber со случайной генерацией значений
10 сообщений из 10, страница 1 из 1
Программное создание поля Autonumber со случайной генерацией значений
    #32087262
Suslik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пожалуйста, как программно создать поле типа AutoNumber, у которого свойство NewValues = Random.

В настоящий момент у меня есть такой код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
  Dim Fld As Field
  ...
  Set Fld = New DAO.Field
  With Fld
    .Name =  "ID" 
    .Type = DAO.dbLong
    .Attributes =  49 
    .Required = True
  End With


Этот код создаёт поле с нужным типом, но свойство NewValue у него по умолчанию Incremenal, а не Random. К сожалению, я не нашёл в хелпе ничего по этой теме.
...
Рейтинг: 0 / 0
Программное создание поля Autonumber со случайной генерацией значений
    #32087298
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В конструкторе таблице ставишь тип поля "Cчетчик" и параметр "Новые значения" ставишь "Случайно"! Вроде все просто!
...
Рейтинг: 0 / 0
Программное создание поля Autonumber со случайной генерацией значений
    #32087356
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте
Код: plaintext
Field.DefaultValue=GenUniqueID()
...
Рейтинг: 0 / 0
Программное создание поля Autonumber со случайной генерацией значений
    #32087443
Suslik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2mahoune: Мне не надо в конструкторе, мне надо программно...

Насчёт GenUniqueID(): я уже пробовал вот такой код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
    Set Fld = New DAO.Field
    With Fld
      .Name = ManagersKeyField
      .Type = DAO.dbLong
      .Attributes =  49 
      .DefaultValue =  "GenUniqueID()" 
      .Required = True
    End With


Это не помогло, однако...
...
Рейтинг: 0 / 0
Программное создание поля Autonumber со случайной генерацией значений
    #32087468
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помоему можно делать .DefaultValue= Random()
Потому как БД попробует вставить, а если такая запись есть подставит другой свободный номер!
...
Рейтинг: 0 / 0
Программное создание поля Autonumber со случайной генерацией значений
    #32087470
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
Dim tdf As TableDef, fld As DAO.Field, mdb As Database '(последнее очень важно!)
Set mdb = CurrentDb
Set tdf = mdb.TableDefs( "Q1" )
Set fld = tdf.CreateField( "Man" , dbLong)
fld.DefaultValue =  "GenUniqueID()" 
tdf.Fields.Append fld
...
Рейтинг: 0 / 0
Программное создание поля Autonumber со случайной генерацией значений
    #32087577
Suslik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
К сожалению, ни один способ не подошёл...
...
Рейтинг: 0 / 0
Программное создание поля Autonumber со случайной генерацией значений
    #32087747
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В последнем ответе о AlexJuice строчку
fld.DefaultValue = "GenUniqueID()"
разместите после строки
tdf.Fields.Append fld

т.е.:
...
tdf.Fields.Append fld
fld.DefaultValue = "GenUniqueID()"

И все у вас получится...
...
Рейтинг: 0 / 0
Программное создание поля Autonumber со случайной генерацией значений
    #32087752
Фотография AlexJuice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сожалению, ни один способ не подошёл...

По идейным соображениям? ;0)

А вот у меня все ОК. Я же проверяю, а не от балды пишу!
...
Рейтинг: 0 / 0
Программное создание поля Autonumber со случайной генерацией значений
    #32087768
Suslik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я вот тоже проверял - не выходило

Но, слава богу, результат достигнут.

Оказывается, в этом деле есть тонкость: в моём случае свойство DefaultValue устанавливалось в момент программного создания таблицы, в отличие от примера AlexJuice, где поле добавлялось уже в существующую таблицу. Очевидно, пока таблица не добавлена в семейство TableDefs, это свойство не устанавливается в "GenUniqueID()".

Таким образом, я просто сначала создал таблицу со всеми полями, выполнил .TableDefs.Append, а затем поменял свойство нужного поля на "GenUniqueID()".

Всем спасибо.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Программное создание поля Autonumber со случайной генерацией значений
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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