Access + VBA:正确创建数据库

Posted

技术标签:

【中文标题】Access + VBA:正确创建数据库【英文标题】:Access + VBA: Correct creation of database 【发布时间】:2012-05-06 20:34:02 【问题描述】:

如何正确创建具有以下字段的数据库:

Dim F As String
Dim S As Long
Dim T As Integer
Dim C As Double //Currency
Dim D As String //Date


F = "ABC"
S = 88869045
T = 9   
C = 30.4493 // currency, but can be double
D = "06.08.2010" // date (how to correct convert to date?) //#1

DBTable.Name = "TestTable"
DBTable.Columns.Append "First", adVarWChar, 40
DBTable.Columns.Append 1, adBigInt, 20
DBTable.Columns.Append 0, adInteger
DBTable.Columns.Append 0, adCurrency
DBTable.Columns.Append 0, adDate

DBCatalog.Tables.Append DBTable

还有DBCatalog as ADOX.CatalogDBTable as ADOX.Table

另请参阅#1 上的其他问题。 谢谢!

【问题讨论】:

【参考方案1】:

如果您的 Access 版本是 2000 或更高版本,您可以使用 Replace() 函数将破折号替换为日期字符串中的点。然后CDate() 函数将能够将字符串转换为日期/时间值。

Debug.Print CDate(Replace("06.08.2010",".","-"))
6/8/2010 

这是我系统上“立即”窗口中的一个示例,它使用美国作为其区域设置。所以CDate() 可以接受包含 mm-dd-yyyy 格式的日期的字符串。如果您的语言环境不同,您将需要付出更多的努力才能获得所需的内容。

【讨论】:

谢谢:) D = CDate("20/12/2010") 为我工作:) 和MsgBox D 显示20.12.2010 :)【参考方案2】:

一切正常:

//create database
DBTable.Name = "TestTable"
DBTable.Columns.Append "First", adVarWChar, 40
DBTable.Columns.Append "Second", adDouble, 40
DBTable.Columns.Append "Third", adInteger
DBTable.Columns.Append "Forth", adCurrency
DBTable.Columns.Append "Fifth", adDate

但是关于将字符串转换为日期的问题仍然悬而未决:

Dim D as String //must be date 
D = "06.10.2010"

如何将其转换为日期,然后插入到数据库中? (adDate 和 Date 类型兼容吗?)

所以,显示最后一个版本的代码:

// after this: insert data into datatable (not in question, but part of creation db (usage is necessary))
Dim F As String
Dim S As Double
Dim T As Integer
Dim C As Double
Dim D As Date

Dim SS As String
Dim TS As String
Dim CS As String
Dim DS As String

F = "'" + "ABC ABD ACS" + "'" //use of single (') quote
S = 88869045
T = 9
C = 30.4493
D = CDate("20/12/2010") // for any data type! don't forget about it

SS = "'" + Str(S) + "'"
TS = "'" + Str(T) + "'"
CS = "'" + Str(C) + "'"
DS = "'" + Str(D) + "'"

DBConnection.Execute "INSERT INTO TestTable VALUES  (" + F + "," + SS + "," + TS + "," + CS + "," + DS + " ) "

附:它工作正常,感谢 cmets 和答案。

【讨论】:

谢谢!在@HasnUP 的帮助下将其更改为我的问题的完整答案。也许不是最佳的,但可以工作

以上是关于Access + VBA:正确创建数据库的主要内容,如果未能解决你的问题,请参考以下文章

Access 2010中使用VBA创建动态表

使用 VBA 将 Access 查询链接到 Excel [重复]

使用宏或 VBA 正确关闭 access 2003 中的隐藏窗口?

使用VBA从Excel创建与Access数据库的连接

从 Access VBA 自动增量创建的文件夹名称

Ms Access 数据库可以在使用 vba 打开时创建自己的备份吗?