MSAccess.SysCmd 将旧 mdb 转换为 accdb,在 vb.net vs2019
Posted
技术标签:
【中文标题】MSAccess.SysCmd 将旧 mdb 转换为 accdb,在 vb.net vs2019【英文标题】:MSAccess.SysCmd converting old mdb to accdb, in 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 有什么我不知道的特别之处吗?
【问题讨论】:
【参考方案1】:经过几个小时的努力,我在查看 Microsoft Doc 文章时偶然发现了答案:MS Access SysCmd method
源和目标的参数类型是旧的“变体”数据类型。 我决定修改我的代码以将字符串变量转换为“对象”类型:
Dim ret = oAccess.SysCmd(603, CObj(SourceDBName), CObj(TargetDBName))
vs2019 说演员阵容是多余的,但你猜怎么着? - 成功了!
我希望这对处于类似情况的任何人都有用。 干杯 安德鲁
【讨论】:
以上是关于MSAccess.SysCmd 将旧 mdb 转换为 accdb,在 vb.net vs2019的主要内容,如果未能解决你的问题,请参考以下文章