【问题标题】:MSAccess.SysCmd converting old mdb to accdb, in vb.net vs2019MSAccess.SysCmd 将旧 mdb 转换为 accdb,在 vb.net vs2019
【发布时间】:2020-09-02 12:56:00
【问题描述】:

我在将旧的访问 mdb 转换为新格式 (2007) accdb 时遇到问题。 过去我使用过以下代码,该代码有效:

    ' Delete the resultant accdb just in case
    File.Delete("C:\temp\TheTargetDB.accdb")
    Dim oAccess = CreateObject("Access.Application")

    Dim ret = oAccess.SysCmd(603, "C:\temp\TheSourceDB.mdb", "C:\temp\TheTargetDB.accdb")

    oAccess.quit()
    oAccess = Nothing

    If ret = 0 Then
        MsgBox("DID NOT CONVERT")
        Exit Sub
    End If

但是,我尝试将它与变量一起使用,但这不起作用:

    Dim SourceDBName As String = "C:\temp\TheSourceDB.mdb"
    Dim TargetDBName As String = "C:\temp\TheTargetDB.accdb"

    ' Delete the resultant accdb just in case
    File.Delete(TargetDBName)
    Dim oAccess = CreateObject("Access.Application")

    Dim ret = oAccess.SysCmd(603, SourceDBName, TargetDBName)

    oAccess.quit()
    oAccess = Nothing

    If ret = 0 Then
        MsgBox("DID NOT CONVERT")
        Exit Sub
    End If

SysCmd 有什么我不知道的特别之处吗?

【问题讨论】:

    标签: vb.net ms-access-2007


    【解决方案1】:

    经过几个小时的努力,我在查看 Microsoft Doc 文章时偶然发现了答案:MS Access SysCmd method

    源和目标的参数类型是旧的“变体”数据类型。 我决定修改我的代码以将字符串变量转换为“对象”类型:

    Dim ret = oAccess.SysCmd(603, CObj(SourceDBName), CObj(TargetDBName))

    vs2019 说演员阵容是多余的,但你猜怎么着? - 成功了!

    我希望这对处于类似情况的任何人都有用。 干杯 安德鲁

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-05
      • 1970-01-01
      • 1970-01-01
      • 2013-03-27
      • 2013-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多