Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Программное создание поля Autonumber со случайной генерацией значений / 10 сообщений из 10, страница 1 из 1
08.01.2003, 10:50
    #32087262
Suslik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программное создание поля Autonumber со случайной генерацией значений
Подскажите, пожалуйста, как программно создать поле типа 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
08.01.2003, 11:19
    #32087298
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программное создание поля Autonumber со случайной генерацией значений
В конструкторе таблице ставишь тип поля "Cчетчик" и параметр "Новые значения" ставишь "Случайно"! Вроде все просто!
...
Рейтинг: 0 / 0
08.01.2003, 12:32
    #32087356
AlexJuice
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программное создание поля Autonumber со случайной генерацией значений
Попробуйте
Код: plaintext
Field.DefaultValue=GenUniqueID()
...
Рейтинг: 0 / 0
08.01.2003, 14:16
    #32087443
Suslik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программное создание поля Autonumber со случайной генерацией значений
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
08.01.2003, 14:36
    #32087468
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программное создание поля Autonumber со случайной генерацией значений
Помоему можно делать .DefaultValue= Random()
Потому как БД попробует вставить, а если такая запись есть подставит другой свободный номер!
...
Рейтинг: 0 / 0
08.01.2003, 14:39
    #32087470
AlexJuice
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программное создание поля Autonumber со случайной генерацией значений
Код: 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
08.01.2003, 15:44
    #32087577
Suslik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программное создание поля Autonumber со случайной генерацией значений
К сожалению, ни один способ не подошёл...
...
Рейтинг: 0 / 0
08.01.2003, 18:01
    #32087747
Serge Gavrilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программное создание поля Autonumber со случайной генерацией значений
В последнем ответе о AlexJuice строчку
fld.DefaultValue = "GenUniqueID()"
разместите после строки
tdf.Fields.Append fld

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

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

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

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

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

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

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

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


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