我有几个Excel报告通过ODBC与其他用户共享来查询Oracle数据库。每个用户都有自己的用户ID和密码,保存在HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBC.INI
文件中,以便更轻松地连接这些数据库。
每次向Excel添加查询时,Excel都会自动创建一个连接字符串,每次需要在Excel中刷新数据时都可以执行该连接字符串。 连接字符串的格式为:
DSN = DATABASE; UID = USERNAME; DBQ = DBASE; DBA = W; APA = T; EXC = F; FEN = T; QTO = T; FRC = 10; FDL = 10; LOB = T; RST = T ; BTD = F; BNF = F; BAM = IfAllSuccessful; NUM = NLS; DPM = F; MTS = T; MDI = F; CSR = F; FWC = F; FBS = 64000; TLO = O; MLD = 0; ODA = F;”
我希望Excel从它构建的这些连接字符串中排除UID=USERNAME
参数,以便它从注册表中提取用户名。它目前为密码值而不是用户名执行此操作。
如果我手动删除UID参数,Excel会在每次刷新查询时自动将其填入并填写用户上次刷新查询的内容:
我已经尝试将用户名填写为UID=/
,这似乎告诉Excel从注册表中提取用户名,就像我第一次运行时一样;但随后,会弹出Oracle ODBC Driver Connect登录信息,认为用户名实际上是/
:
所以看起来似乎是甲骨文或者不能始终如一地识别这个参数。
基本上我试图找出是否存在某种通配符或其他类似的参数,我可以用它来填写UID字段,以便Excel和Oracle ODBC Driver Connect对话框都知道去拉动注册表中的用户名;或者,如果有办法阻止Excel在每次刷新连接时将UID参数添加到连接字符串。
如果没有,我认为我的解决方案可能是构建一个Excel附加组件,当Excel尝试将其添加到连接字符串时,该附加组件会自动删除UID字段。
答案 0 :(得分:0)
我提出的解决方案是将连接字符串拆分为数组,清除以" UID ="开头的元素,并将连接字符串重新组合在一起。