vba - 创建具有访问 VBA 和格式字段的表
问题描述
我想使用带有格式化字段的 access vba 创建一个表。创建表格时如何使用“标准”格式格式化货币字段?
Private Sub CreateTable_Click()
DoCmd.RunSQL "CREATE TABLE Test( " & _
"[id] AUTOINCREMENT PRIMARY KEY, " & _
"[transaction_date] DATE, " & _
"[reference] TEXT(255)," & _
"[details] TEXT(255)," & _
"[debit] CURRENCY," & _
"[credit] INT);"
End Sub
解决方案
我们为此使用DAO 。
这是一个例子。在底部,将格式分配给字段:
' Creates the local tables and indexes from scratch if missing.
' Returns True if success, False if not.
'
' 2017-11-14. Gustav Brock. Cactus Data ApS, CPH.
'
Public Function CreateLocalDataTable( _
ByVal TableName As String) _
As Boolean
Dim Database As DAO.Database
Dim Table As DAO.TableDef
Dim Field As DAO.Field
Dim Index As DAO.Index
Dim Property As DAO.Property
Dim Result As Boolean
Set Database = CurrentDb
For Each Table In Database.TableDefs
If Table.Name = TableName Then
' Table exists. Exit.
Result = True
Exit For
End If
Next
If Table Is Nothing Then
' Create table.
Select Case TableName
Case "Country"
Set Table = Database.CreateTableDef(StrConv(TableName, vbProperCase))
Set Field = Table.CreateField("Code", dbText, 2)
Field.AllowZeroLength = False
Field.Required = True
Table.Fields.Append Field
Set Field = Table.CreateField("Name", dbText, 45)
Field.AllowZeroLength = False
Field.Required = True
Table.Fields.Append Field
Set Index = Table.CreateIndex("PrimaryKey")
Set Field = Index.CreateField("Code")
Index.Fields.Append Field
Index.Primary = True
Table.Indexes.Append Index
Case "Zone"
Set Table = Database.CreateTableDef(StrConv(TableName, vbProperCase))
Set Field = Table.CreateField("ZoneId", dbInteger)
Field.Required = True
Table.Fields.Append Field
' Don't create an index on CountryCode as this will
' be created when creating referential integrity.
Set Field = Table.CreateField("Name", dbText, 35)
Field.AllowZeroLength = False
Field.Required = True
Table.Fields.Append Field
Set Index = Table.CreateIndex("PrimaryKey")
Set Field = Index.CreateField("ZoneId")
Index.Fields.Append Field
Index.Primary = True
Table.Indexes.Append Index
Set Index = Table.CreateIndex("CountryCode")
Set Field = Index.CreateField("CountryCode")
Index.Fields.Append Field
Table.Indexes.Append Index
Set Index = Table.CreateIndex("Name")
Set Field = Index.CreateField("Name")
Index.Fields.Append Field
Table.Indexes.Append Index
Case "Timezone"
Set Table = Database.CreateTableDef(StrConv(TableName, vbProperCase))
Set Field = Table.CreateField("ZoneId", dbInteger)
Field.Required = True
Table.Fields.Append Field
Set Field = Table.CreateField("Abbreviation", dbText, 6)
Field.AllowZeroLength = False
Field.Required = True
Table.Fields.Append Field
Set Field = Table.CreateField("TimeStart", dbCurrency)
Field.Required = True
Table.Fields.Append Field
Set Field = Table.CreateField("Offset", dbLong)
Field.Required = True
Field.DefaultValue = "0"
Table.Fields.Append Field
Set Field = Table.CreateField("Dst", dbBoolean)
Field.DefaultValue = "False"
Table.Fields.Append Field
' Don't create an index on ZoneId as this will
' be created when creating referential integrity.
Set Index = Table.CreateIndex("Abbreviation")
Set Field = Index.CreateField("Abbreviation")
Index.Fields.Append Field
Table.Indexes.Append Index
Set Index = Table.CreateIndex("TimeStart")
Set Field = Index.CreateField("TimeStart")
Index.Fields.Append Field
Table.Indexes.Append Index
End Select
If Not Table Is Nothing Then
' Append table.
Database.TableDefs.Append Table
' Append properties.
Select Case TableName
Case "Timezone"
Set Field = Table.Fields("TimeStart")
Set Property = Field.CreateProperty("Format", dbText)
Property.Value = "0"
Field.Properties.Append Property
End Select
Result = (Err.Number = ErrorNone)
End If
End If
CreateLocalDataTable = Result
End Function
推荐阅读
- c# - EF Core 在迁移时将列数据从表移动到另一个表 (UP)
- python - Tensorflow初始化一个只有一行/列不为零的稀疏张量?
- android - 无法构建 Xamarin.Android,因为 Xamarin 找不到“aapt.exe”
- python - 反转自定义颜色图
- javascript - 如何将类名添加到以特定 id 开头的所有元素?
- html - 将登录页面添加到纸质仪表板角度主题
- javascript - 对来自测试之外的文件的页面标题进行断言
- c# - 在 ASP.Net Core 中创建多对多关系视图?
- javascript - 更新对象数组中的单个项目
- mongodb - 调用mongo存储库的保存方法时未调用Mongo Date Custom Converter