微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MSAccess.SysCmd在vb.net vs2019中将旧的mdb转换为accdb

如何解决MSAccess.SysCmd在vb.net vs2019中将旧的mdb转换为accdb

我在将旧的访问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有什么特别之处吗?

解决方法

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

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

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

vs2019说演员表是多余的,但你猜怎么着? -有效!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。