在 MS Access 中,我需要按需自动创建表(大约 100 个,甚至更多)。
SQL“CREATE TABLE”命令可以很好地处理这个问题,尽管我需要通过如下表达式来格式化日期/时间字段:
CREATE TABLE myTable (ID INTEGER, T DATETIME CONSTRAINT CT PRIMARY KEY, X DOUBLE, S CHAR)
创建的表字段属性如下所示:
但我还没有找到一种方法来设置“格式”字段属性,为“yyyy-mm-dd hh:nn:ss”:
有没有办法通过 SQL 表达式来指定这一点,而不是使用 MS Access 宏?
致以最美好的祝愿,
Access 中的 DDL 很有用,但相当有限,我认为您不能用它定义字段的格式。
要访问表上的所有属性,您需要使用 DAO 下拉到 VBA:
Public Sub UpdateFormat(tableName As String, fieldName As String, format As String)
Dim db As DAO.Database
Dim tb As DAO.TableDef
Dim fd As DAO.Field
Set db = CurrentDb()
Set tb = db.TableDefs(tableName)
Set fd = tb.Fields(fieldName)
fd.Properties("Format").Value = format
End Sub
这只是为了向您展示它是如何工作的,您可能应该添加一些错误检查,因为如果您尝试访问不支持
Format
属性的字段,它会抛出错误。
使用方法:
UpdateFormat "PO", "RateDate", "dd mmm yyyy"
古老但仍然相关的问题。 Renaud Bompuis 的回答让我开始研究 Office Pro Plus 21 中的解决方案,我认为最初的答案中缺少将属性添加到字段属性中。
Public Sub UpdateFormat(tableName As String, fieldName As String, format As String)
Dim db As DAO.Database
Dim tb As DAO.TableDef
Dim fd As DAO.Field
Set db = CurrentDb()
Set tb = db.TableDefs(tableName)
Set fd = tb.Fields(fieldName)
With fd
.Properties.Append .CreateProperty("Format", dbText, "Long Time")
End With
End Sub