日期:2014-05-16  浏览次数:21156 次

如何查询、修改链接表的路径?
需要查询ACCESS的链接表路径是否有效,并且更新,请问用C++,或是C#该如何做?
谢谢~

------解决方案--------------------
SELECT MSysObjects.Name
FROM MSysObjects
WHERE (((MSysObjects.Type)=6) AND ((Left([name],4))<>"MSys"))
遍历这个查询,检查db.TableDefs(Name).Connect
若无效,重置并.RefreshLink----更新
------解决方案--------------------
以管理员身份打开MDB,在工具->安全->用户与组权限,权限中修改管理员具有对MSysObjects访问权限
------解决方案--------------------
那就只有用ADO、ADOX来取得了
------解决方案--------------------
如果没有权限的话,什么方法都不行了。
------解决方案--------------------
Public Function M_刷新链接表路径(CurrentDb, CurrentProject)
'我的程序中用的vba代码,已调试通过。应该可以改成带权限的,如果调试通过贴出来一份,这方面我也不熟
msql = "SELECT Name FROM MSysObjects WHERE Type = 6 and Left([Name], 4) <> " & "'" & "MSys" & "'"
Dim rs As New ADODB.Recordset, db As Database, t As TableDef, 文件名 As String, 连接字串 As String
Set db = CurrentDb
rs.Open msql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
rs.MoveFirst
For i = 0 To rs.RecordCount - 1
表名 = rs(0)
Set t = db.TableDefs(表名)
连接字串 = t.Connect
文件名 = M_Get文件名By连接字(连接字串) '这个函数从包含路径的文件名中提取文件名
'你可以自己写一个
t.Connect = 连接字串 & CurrentProject.Path & "\" & 文件名
t.RefreshLink
rs.MoveNext
Next i
rs.Close
Set rs = Nothing
End Function
------解决方案--------------------
文件名 = M_Get文件名By连接字(连接字串) '这个函数从包含路径的文件名中提取文件名
这个没说完,还有一个功能是:
把“连接字串”提取出来,我运行了一下:
进入前
连接字串=";DATABASE=L:\hc\DDD\L1_biao.mdb"
出来后
连接字串=";DATABASE="
好像改这里能加权限识别,我还没式,你试一试
------解决方案--------------------
这还调用什么,照着直接用C#再写一个,
C#我还没顾上学,贴出来让我也学习下
------解决方案--------------------
不知道你的具体环境是什么?

连接字串=";DATABASE="
你把这里加上密码试试:
连接字串="PASSWORD=123;DATABASE="

如果连密码都不知道,就要去解密了(这相当于偷窥,不建议这样做)!