【问题标题】:Access + VBA: Correct creation of databaseAccess + VBA:正确创建数据库
【发布时间】: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 上的其他问题。 谢谢!

【问题讨论】:

    标签: database excel ms-access vba


    【解决方案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 的帮助下将其更改为我的问题的完整答案。也许不是最佳的,但可以工作
    猜你喜欢
    • 2022-09-23
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    • 1970-01-01
    • 2019-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多