Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

[5分]链接表问题

chinasa  发表于:2013-01-06 16:09:44  
复制

请见我最新提问,期待高手指点。

 

Top
dbaseIIIer 发表于:2013-01-07 09:29:24

“升级Office 2007 后,所有的链接表都无法打开了”?  什么意思?

到底是

1. 你的 Oracle ODBC Driver 环境错误? 还是

2. 你的 Office 与 什么连接字符串不匹配?

不找出问题,还是不好处理的!


可以做的是查下以前的连接词,在立即窗体里面

for each t in currentdb().tabledefs: ? t.name, t.connect: next

就能看到。


不过,不是程序建立的连接表,无论你用什么方式建立的连接表,是不会保存用户名和密码的。

这是 Access 的安全标准,就是不让用户在 tabledefs 里面看到连接用户名和密码。


你要建立有保存密码的 连接表,只能用 

Docmd.TransferDatabase 在 VBA 里面建立的。


不过这真的是不安全!



chinasa 发表于:2013-01-07 09:51:16

1.原先我的链接表都是手工链接的,密码是保存的(ACCESS链接时有此选项),链接完后就可以直接当作本ACCESS数据库中一个表使用了.

2.现在OFFICE2007版本下,直接打开这些表会提示"ODBC....错误",我把此链接表删除,重新链接就可以打开了.

3.由于做了很多数据库,所链接的表也很多.如果逐一这样删除会比较麻烦.

 

另外,关于安全方面,也确实一直是我比较担心的.也曾经想用Docmd.TransferDatabase来做,但一方面不是很会怎样做.更重要的是,我所有的查询都是用向导建立的,因为这样比较方便,而SQL语句我实在是不是很熟悉.

不知道正确的方向应该如何?(前提别太麻烦,对写语句水平要求低一些)



dbaseIIIer 发表于:2013-01-07 16:46:14

不用代码是建立不了 带密码的 数据库连接的,所以你还是放弃好了!


那就 全部不加 密码来连接。


在你程序最开头,用 CreateTableDef 来建立连接表,然后 删除这个刚建立的连接表,

然后你其他所有没有密码的表都可以打开的了!



dbaseIIIer 发表于:2013-01-07 17:19:46

最正确、最正统 的方法是


 在 Oracle 上 为用户建立用户号、密码,所有连接表都不用设置 密码的。


用户用 Access 打开数据表或者窗体时候,就需要输入一次密码,然后程序关闭之前都不需要再输入密码的。


你后台用 MSSql, MySQL, DB/2 都是一样的!





chinasa 发表于:2013-01-08 15:57:11

感谢总斑竹的指导.

我使用的密码是数据库密码,是不可以让操作人员知道的.所以没办法让他们输入密码.

我在手工连接的时候可以选择"保存密码",之后操作人员就不需要再输入密码了.



chinasa 发表于:2013-01-09 14:41:02

我查看了在2003版本及2007版本下的系统表MSysObjects的记录,分别如下:

2003版本:DSN=AAA;DBQ=CCC;UID=UUU;PWD=PPP

2007版本:DSN=AAA;UID=UUU;PWD=PPP;SERVER=CCC;

 

两着的区别:1)顺序不同:2003为DSN/DBQ/UID/PWD  而2007为DSN/UID/PWD/SERVER    2)有一个名字不同:在2003数据库名为DBQ,而在2007数据库名为SERVER

 

是否有办法直接修改这个系统表?



dbaseIIIer 发表于:2013-01-09 20:22:56

系统表一定不是连接表来的哦!

你说系统表 记录?


我叫你看  Currentdb.tabledefs("你的连接表名").connect 哦!



chinasa 发表于:2013-03-06 16:30:55

下面是我从其它老师处复制来的,但是为什么我提示链接不成功?(我原先通过ODBC手工链接能成功的,但用代码就不行)。哪位老师能帮我写段代码,我复制过来就能使用,最好后面再加一句打开表/查询的SQL语句。万分感谢!

假设:

数据库地址:192.168.1.1

数据库名:AAA

用户名:BBB

密码:CCC

需要链接的表名:DDD

 

 

Dim ConnDB As New ADODB.Connection
Dim OraOpen As Boolean
Dim connstr As String
On Error GoTo Myerr
strDBName = IIf(strIPName = "1", strDBName, strIPName & ":1521/" & strDBName) '-----------网络地址转换,ORACLE默认端口是1521
connstr = "DRIVER={Microsoft ODBC for Oracle};SERVER=" & strDBName & ";UID=" & strUserID & ";PWD=" & strPassword & ";"
ConnDB.CursorLocation = adUseServer
ConnDB.Open connstr
OraOpen = True
MsgBox "恭喜你已经成功连接到数据库!", vbInformation, "Connect Successful"
ConnDB.Close
Set ConnDB = Nothing
Exit Function
Myerr: MsgBox "连接不成功,请检查你的用户名、密码和数据库地址是否正确!", vbInformation, "No Connect Successful"
End Function



总记录:8篇  页次:1/1 9 1 :