如何解决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 举报,一经查实,本站将立刻删除。