[MS Access VBA] Как создать таблицу с автонумерованным первичным ключом с текстовым префиксом - PullRequest
0 голосов
/ 13 декабря 2018

В настоящее время у меня есть код VBA, который создает таблицу с автонумерованным первичным ключом (Имя поля: Код).Похоже на это.

SQL1 = "CREATE TABLE [" + Replace(Me.RecordNo.Value, ".", "p") + "_Inspect] (Code COUNTER(1, 1) PRIMARY KEY, Name TEXT, Description TEXT, Last_inspection DATE, Recent_inspection DATE, Next_inspection DATE, Inspection_type TEXT, inspection_equipment TEXT, Inspection_result TEXT)"

DoCmd.RunSQL SQL1

Но для «Код» я хочу изменить формат этого первичного ключа.На данный момент это просто первичный ключ с инкрементным номером (1, 2, 3, 4, 5 ...), но я хочу добавить к нему текстовый префикс, например (Code1, Code2, Code3, Code4 ....),Как я могу это сделать?

Спасибо заранее, искренне.

1 Ответ

0 голосов
/ 13 декабря 2018

Вы не можете.

AutoNumbers - это просто числа.Включение текста с ними будет иметь существенное влияние на порядок (при упорядочении текста Code9 больше, чем Code10, поскольку 9 больше 1), что приводит к массовой фрагментации.

Вместо этого вы можете изменить форматирование автонумера, чтобы отображать «Код» перед номером (не сохраняя его), или использовать второе вычисляемое поле, в котором хранится «Код», а затем автонумерация.

Обратите внимание, что динамическое создание таблиц является сильным показателем ненормализованной базы данных.Попробуйте изменить базу данных так, чтобы она не требовала динамически создаваемых таблиц.

Чтобы изменить формат, вы можете использовать следующий код:

Dim td As DAO.TableDef
Set td = CurrentDb.TableDefs(MyTableName)
Dim fld As DAO.Field
Set fld = td.Fields!MyFieldName
Dim prp As DAO.Property
Set prp = fld.CreateProperty("Format", dbText, """Code""#")
fld.Properties.Append prp

Предполагается, что свойство format еще не было инициализировано.В противном случае вы можете просто использовать следующий код:

CurrentDb.TableDefs(MyTableName).Fields!MyField.Properties!Format = """Code""#"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...