我正在处理一个.vbs文件,我使用下面的代码行连接到数据库,而不是运行一些查询。
Set cm = CreateObject("ADODB.Command")
cm.ActiveConnection = "Driver={Microsoft ODBC for Oracle};Server ="+sInst+"; UID="+sUID+";PWD="+sPWD
cm.CommandType = 1
cm.CommandText = sSQL
cm.Execute()
Set cm = Nothing
对我来说奇怪的是,当我将这些行复制到QTP并从QTP运行时,它运行正常。 但是当运行.vbs文件(通过双击和从cmd)时,它会给我以下错误:
[Microsoft] [ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序
我还有其他机器,它的工作正常。我尽力验证机器中的所有东西,但我没有得到它。
我感谢任何想法/帮助/建议。
感谢。
快速更新
由于vbs无法正常工作,我尝试使用googled并使用以下行创建批处理文件:
C:\Windows\SysWoW64\cscript.exe //NoLogo filepath\xyz.vbs
现在正在工作。
那么问题是如何使用 SysWoW64 中的ODBC运行vbs而不是 system32 ...
答案 0 :(得分:6)
64位Windows上的进程可以是纯32位或纯64位 默认情况下,64位Windows在64位引擎中执行您的vbscript,该引擎无法调用任何32位DLL。
64位VBScript将使用64位ODBC,只能调用64位Oracle软件(如果已安装)。
32位VBScript将使用32位ODBC,它只能调用32位Oracle软件(如果已安装)。
正如您所发现的,大多数内置Windows程序的32位版本在64位Windows上远离视图。您必须自己显式运行32位版本的ODBC管理员或CSCRIPT 根据您的描述,您似乎在您的计算机上安装并配置了32位Oracle软件。通常需要单独安装和配置64位Oracle软件。
答案 1 :(得分:0)
请尝试以下操作:
转到以下路径:
C:\Windows\SysWOW64\odbcad.exe
双击并弹出窗口:
转到系统DSN
添加
现在在Oracle
Oraclient11g_home 1
现在再次弹出一个包含以下字段:
数据源名称:PQALN07(数据库名称)
描述:PQALN07
TNS服务名称:PQALN07(数据库名称)
用户ID:风险(架构名称)
通过添加上述DSN,您的问题将得到解决。
现在使用宏运行你的VB代码,这次你不会得到任何错误。