【问题标题】:Insert a Date as a String to Access using a DAO Recordset将日期作为字符串插入以使用 DAO 记录集进行访问
【发布时间】:2013-02-14 14:15:03
【问题描述】:

我正在使用我在一篇旧 C# 帖子中找到的一些代码,通过 VB.net 将 DAO 插入到 Access 中。我运行代码来插入数字,它运行良好。但是,当我尝试在哈希之间插入一个date 作为字符串时,我得到一个Data type conversion error。我看了看,看不到如何更改记录集字段的数据类型以接受字符串/日期。

代码如下:

    Dim dbEngine As New dao.DBEngine
    Dim db As dao.Database = dbEngine.OpenDatabase(DataDirectoryName & DatabaseName)
    Dim rs As dao.Recordset = db.OpenRecordset(TableName)

    Dim myFields As dao.Field() = New dao.Field(FieldNames.Count - 1) {}
    For k As Integer = 0 To FieldNames.Count - 1
        myFields(k) = rs.Fields(FieldNames(k))
    Next

    dbEngine.BeginTrans()
    For i As Double = 0 To Data.Rows - 1
        rs.AddNew()
        For k As Integer = 0 To FieldNames.Count - 1
            rs.Fields(k).Value = Data.Value(k, i)
            rs.Fields(FieldNames(k)).Value = Data.Value(k, i)
            myFields(k).Value = Data.Value(k, i)
        Next
        rs.Update()
    Next
    dbEngine.CommitTrans()
    rs.Close()
    db.Close()

这是一行数据:

(0) = "74"
(1) = "#01 February 2012 00:02:00#"
(2) = "40"
(3) = "130"
(4) = "60"

'Data' 是一个自定义类,它是 list (of list (of string))

【问题讨论】:

  • DAO 要求日期格式为 #mm/dd/yyyy hh:nn:ss#(年份也可以是 2 个字符)。重新格式化日期,你应该没问题。
  • @Ciarán 我已经尝试过 #mm/dd/yyyy hh:nn:ss# 和 '#mm/dd/yyyy hh:nn:ss#',两者都给出与以前相同的错误。
  • @Remou "" 分隔符来自 vb.net,将其显示为字符串,我不相信这些会发送到数据库,也不知道如何删除它们。与之前的评论一样,我尝试使用日期和字符串分隔符以及仅使用日期分隔符,但仍然得到相同的错误。

标签: vb.net ms-access datetime dao recordset


【解决方案1】:

虽然 VBA 将接受您的字符串上的日期分隔符,例如 #11 February 2013 20:23:11# 似乎 VB.Net 不会,但是它确实接受 MS Access 更新。

 rs.Fields("adate").Value = CDate("11 February 2013 20:23:11")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多