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.Catalog
和DBTable 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:正确创建数据库的主要内容,如果未能解决你的问题,请参考以下文章
使用 VBA 将 Access 查询链接到 Excel [重复]