设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 3034|回复: 11

[ADO/DAO] 未保存密码的链接表,打开了数据库连接仍然打不开

[复制链接]
发表于 2017-2-28 14:26:22 | 显示全部楼层 |阅读模式
我用以下代码创建了后台是SQL SERVER的链接表,退出ACCESS(版本2010),再进去,该链接表因为没有保存密码,所以打不开:
  1. cnString = "ODBC;DRIVER={SQL Server};SERVER=" & dbServer & ";UID=" & dbUser & ";PWD=" & dbPwd & ";DATABASE=" & dbName
  2. Set tbl = db.CreateTableDef(tblName)
  3. tbl.Connect = cnString
  4. tbl.SourceTableName = tblName
  5. db.TableDefs.Append tbl
复制代码
然后我用以下代码打开数据库连接(ODBC连接字符串与上面的一样),连接打开了,理论上讲ODBC连接池应该是开了,链接表应该是可读写了,可是链接表仍然打不开,为什么?
  1. Set db = DBEngine.OpenDatabase("", False, False, cnString)
  2. db.Close
复制代码


发表于 2017-2-28 14:36:02 | 显示全部楼层
本帖最后由 access新新新手 于 2017-2-28 14:37 编辑

目前我用的是用VB6打开access,然后在VB6里面刷新一下链接表,
这样就可以了,这样稍微安全一点。

如果直接打开access是用不了的,因为在链接的时候没有保存密码

 楼主| 发表于 2017-2-28 14:44:30 | 显示全部楼层
access新新新手 发表于 2017-2-28 14:36
目前我用的是用VB6打开access,然后在VB6里面刷新一下链接表,
这样就可以了,这样稍微安全一点。

我是按下面这个帖子的想法做的,不知道有没有理解错:
http://www.office-cn.net/forum.p ... hlight=%B0%B2%C8%AB
发表于 2017-2-28 14:50:12 | 显示全部楼层
本帖最后由 access新新新手 于 2017-2-28 15:05 编辑
老鬼 发表于 2017-2-28 14:44
我是按下面这个帖子的想法做的,不知道有没有理解错:
http://www.office-cn.net/forum.php?mod=viewthr ...

这个没有去研究,我现在是用vb6来打开数据(access)

access链接SQL Server数据,不要保存密码,这样相对安全一点

再用VB6打开access,打开后刷新一下,这样就链接好了。
还可以把要打开的数据库(access)的后缀改成其他的,比如.DLL都可以打开。
这样打开就是会闪一下才会显示登陆窗体,这个不知道怎么处理。
 楼主| 发表于 2017-2-28 15:32:21 | 显示全部楼层
access新新新手 发表于 2017-2-28 14:50
这个没有去研究,我现在是用vb6来打开数据(access)

access链接SQL Server数据,不要保存密码,这样 ...

我试了刷新链接,还是不行,不知道为什么,刷新代码如下:
  1.     For Each tbl In db.TableDefs
  2.         If Left(tbl.Connect, 4) = "ODBC" Then
  3.             tbl.Connect = "ODBC;DRIVER={SQL Server};SERVER=" & dbServer & ";UID=" & dbUser & ";PWD=" & dbPwd & ";DATABASE=" & dbName
  4.             tbl.RefreshLink
  5.         End If
  6.     Next
复制代码
发表于 2017-2-28 15:55:57 | 显示全部楼层
老鬼 发表于 2017-2-28 15:32
我试了刷新链接,还是不行,不知道为什么,刷新代码如下:

Public Function gf_LinkSqlServer() As Boolean
    On Error GoTo Err_LinkSqlServer
    Dim strConn As String, dbCurr As DAO.Database
    Dim tdf As Object
    Dim dbs As Object
    strConn = "ODBC;DRIVER=SQL Server;SERVER=IP,端口;DATABASE=sql数据库名;UID=saWD=密码"
    Set dbCurr = DBEngine.Workspaces(0).OpenDatabase("OfficeCn", False, False, strConn)
    Set dbs = CurrentDb
    For Each tdf In dbs.TableDefs
        If tdf.Connect <> "" Then
            tdf.Connect = strConn
            tdf.RefreshLink
        End If
    Next
    dbCurr.Close
    Set dbCurr = Nothing
    MsgBox "连接成功", vbInformation, "连接SQL Server"
    gf_LinkSqlServer = True
    Exit Function
Err_LinkSqlServer:
    Err.Clear
    MsgBox "连接出错!", vbCritical, "连接SQL Server"
    gf_LinkSqlServer = False
    DoCmd.Quit
End Function
 楼主| 发表于 2017-2-28 16:03:11 | 显示全部楼层
access新新新手 发表于 2017-2-28 15:55
Public Function gf_LinkSqlServer() As Boolean
    On Error GoTo Err_LinkSqlServer
    Dim strCon ...

你的代码跟我的其实是一样的
发表于 2017-2-28 16:10:24 | 显示全部楼层
老鬼 发表于 2017-2-28 16:03
你的代码跟我的其实是一样的

我的可以刷新,你的刷新不了?
和你的还是有点不一样
发表于 2017-2-28 16:20:48 | 显示全部楼层
老鬼 发表于 2017-2-28 16:03
你的代码跟我的其实是一样的

链接SQLServer表
Sub 链接SQLServer表()
    Dim cnn As String
    Dim dbs As Object    'Database
    Dim tdf As Object    'DAO.TableDef
    Dim strConnect As String
    Dim arr As Variant
    Dim ar As String
    Dim i As Integer
    On Error GoTo errmsg
    ar = ("表1,表2,表3,表n")    '要链接的SQL Server数据库表名
    arr = Split(ar, ",")
    For i = LBound(arr) To UBound(arr)
        Set dbs = CurrentDb
        '下面是ODBC连接SQL字符串
        strConnect = "ODBC;DRIVER=SQL Server;SERVER=IP,端口;DATABASE=sql数据库名;UID=saWD=密码"
        Set tdf = dbs.CreateTableDef(arr(i))  '创建链接表,命名为arr(i)
        tdf.Connect = strConnect
        tdf.SourceTableName = arr(i)    'SQL源表
        dbs.TableDefs.Append tdf
        Set dbs = Nothing
        Set tdf = Nothing
        Application.RefreshDatabaseWindow  '刷新
    Next
    MsgBox "创建成功,请查看表"
    Exit Sub
errmsg:
    Set dbs = Nothing
    Set tdf = Nothing
    MsgBox Err.Description
End Sub

点击这里给我发消息

发表于 2017-2-28 16:42:36 来自手机 | 显示全部楼层
可以哦,我就是access代码里写的刷新
来自: 微社区
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-19 06:50 , Processed in 0.096390 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表