【问题标题】:Opening MS Access database with Powershell?使用 Powershell 打开 MS Access 数据库?
【发布时间】:2022-04-27 20:30:21
【问题描述】:
我正在尝试使用 powershell 在 access 数据库中打开一个表单:
$application = New-Object -ComObject Access.Application
$Fullpath = "path.accdb"
$application.OpenCurrentDataBase($Fullpath)
$application.docmd.OpenForm("frm")
我收到以下错误消息:
使用“1”参数调用“OpenCurrentDatabase”的异常:“无法
转换类型的 COM 对象
'Microsoft.Office.Interop.Access.ApplicationClass' 到接口类型
'Microsoft.Office.Interop.Access._Application'。此操作失败
因为接口的 COM 组件上的 QueryInterface 调用
IID 为“{68CCE6C0-6129-101B-AF4E-00AA003F0F07}”失败,原因是
以下错误:加载类型库/DLL 时出错。 (例外来自
HRESULT: 0x80029C4A (TYPE_E_CANTLOADLIBRARY))。
之前有没有人见过/解决过这个问题?
【问题讨论】:
标签:
forms
powershell
ms-access
【解决方案1】:
我想让你试试这个。我编写了这段代码并且它工作正常
$Db = "sampledb.mdb"
$cursor = 3
$lock = 3
$conn = New-Object -ComObject ADODB.Connection
$recordset = New-Object -ComObject ADODB.Recordset
$conn.Open("Provider=Microsoft.Ace.OLEDB.12.0;Data Source=$Db")
$query = "Select * from LoginInfo"
$recordset.open($query,$conn,$cursor,$lock)
$recordset.Addnew()
$recordset.Fields.Item("EmpID") = "1"
$recordset.Fields.Item("UserName") = $username_txt.Text
$recordset.Fields.Item("PWord") = $password_txt.Text
$recordset.Fields.Item("EmpRole") = $userrole_combo.SelectedItem
$recordset.Update()
$recordset.close()
$conn.close()
【解决方案2】:
现在有点晚了,不过为了跟进……
您是否检查过您的路径是否符合预期?
您似乎试图打开的不是访问应用程序而是 _Application interface 对象(可能是 Word、Outlook、Excel?)
“无法将类型 >'Microsoft.Office.Interop.Access.ApplicationClass' 的 COM 对象转换为接口类型 >'Microsoft.Office.Interop.Access._Application)'。
我会从这样的开始:
$Fullpath = "path.accdb"
echo $Fullpath
$application = New-Object -ComObject Access.Application
$application.OpenCurrentDataBase($Fullpath)
$application.docmd.OpenForm("frm")
迟到总比没有好,也许它会有所帮助。