Office中國(guó)論壇/Access中國(guó)論壇

 找回密碼
 注冊(cè)

QQ登錄

只需一步,快速開始

12下一頁(yè)
返回列表 發(fā)新帖
查看: 3652|回復(fù): 11
打印 上一主題 下一主題

[ADO/DAO] 未保存密碼的鏈接表,打開了數(shù)據(jù)庫(kù)連接仍然打不開

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2017-2-28 14:26:22 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
我用以下代碼創(chuàng)建了后臺(tái)是SQL SERVER的鏈接表,退出ACCESS(版本2010),再進(jìn)去,該鏈接表因?yàn)闆](méi)有保存密碼,所以打不開:
  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
復(fù)制代碼
然后我用以下代碼打開數(shù)據(jù)庫(kù)連接(ODBC連接字符串與上面的一樣),連接打開了,理論上講ODBC連接池應(yīng)該是開了,鏈接表應(yīng)該是可讀寫了,可是鏈接表仍然打不開,為什么?
  1. Set db = DBEngine.OpenDatabase("", False, False, cnString)
  2. db.Close
復(fù)制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享分享 分享淘帖 訂閱訂閱
2#
發(fā)表于 2017-2-28 14:36:02 | 只看該作者
本帖最后由 access新新新手 于 2017-2-28 14:37 編輯

目前我用的是用VB6打開access,然后在VB6里面刷新一下鏈接表,
這樣就可以了,這樣稍微安全一點(diǎn)。

如果直接打開access是用不了的,因?yàn)樵阪溄拥臅r(shí)候沒(méi)有保存密碼

3#
 樓主| 發(fā)表于 2017-2-28 14:44:30 | 只看該作者
access新新新手 發(fā)表于 2017-2-28 14:36
目前我用的是用VB6打開access,然后在VB6里面刷新一下鏈接表,
這樣就可以了,這樣稍微安全一點(diǎn)。

我是按下面這個(gè)帖子的想法做的,不知道有沒(méi)有理解錯(cuò):
http://ctxi.cn/forum.p ... hlight=%B0%B2%C8%AB
4#
發(fā)表于 2017-2-28 14:50:12 | 只看該作者
本帖最后由 access新新新手 于 2017-2-28 15:05 編輯
老鬼 發(fā)表于 2017-2-28 14:44
我是按下面這個(gè)帖子的想法做的,不知道有沒(méi)有理解錯(cuò):
http://ctxi.cn/forum.php?mod=viewthr ...

這個(gè)沒(méi)有去研究,我現(xiàn)在是用vb6來(lái)打開數(shù)據(jù)(access)

access鏈接SQL Server數(shù)據(jù),不要保存密碼,這樣相對(duì)安全一點(diǎn)

再用VB6打開access,打開后刷新一下,這樣就鏈接好了。
還可以把要打開的數(shù)據(jù)庫(kù)(access)的后綴改成其他的,比如.DLL都可以打開。
這樣打開就是會(huì)閃一下才會(huì)顯示登陸窗體,這個(gè)不知道怎么處理。
5#
 樓主| 發(fā)表于 2017-2-28 15:32:21 | 只看該作者
access新新新手 發(fā)表于 2017-2-28 14:50
這個(gè)沒(méi)有去研究,我現(xiàn)在是用vb6來(lái)打開數(shù)據(jù)(access)

access鏈接SQL Server數(shù)據(jù),不要保存密碼,這樣 ...

我試了刷新鏈接,還是不行,不知道為什么,刷新代碼如下:
  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
復(fù)制代碼
6#
發(fā)表于 2017-2-28 15:55:57 | 只看該作者
老鬼 發(fā)表于 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數(shù)據(jù)庫(kù)名;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 "連接出錯(cuò)!", vbCritical, "連接SQL Server"
    gf_LinkSqlServer = False
    DoCmd.Quit
End Function
7#
 樓主| 發(fā)表于 2017-2-28 16:03:11 | 只看該作者
access新新新手 發(fā)表于 2017-2-28 15:55
Public Function gf_LinkSqlServer() As Boolean
    On Error GoTo Err_LinkSqlServer
    Dim strCon ...

你的代碼跟我的其實(shí)是一樣的
8#
發(fā)表于 2017-2-28 16:10:24 | 只看該作者
老鬼 發(fā)表于 2017-2-28 16:03
你的代碼跟我的其實(shí)是一樣的

我的可以刷新,你的刷新不了?
和你的還是有點(diǎn)不一樣
9#
發(fā)表于 2017-2-28 16:20:48 | 只看該作者
老鬼 發(fā)表于 2017-2-28 16:03
你的代碼跟我的其實(shí)是一樣的

鏈接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數(shù)據(jù)庫(kù)表名
    arr = Split(ar, ",")
    For i = LBound(arr) To UBound(arr)
        Set dbs = CurrentDb
        '下面是ODBC連接SQL字符串
        strConnect = "ODBC;DRIVER=SQL Server;SERVER=IP,端口;DATABASE=sql數(shù)據(jù)庫(kù)名;UID=saWD=密碼"
        Set tdf = dbs.CreateTableDef(arr(i))  '創(chuàng)建鏈接表,命名為arr(i)
        tdf.Connect = strConnect
        tdf.SourceTableName = arr(i)    'SQL源表
        dbs.TableDefs.Append tdf
        Set dbs = Nothing
        Set tdf = Nothing
        Application.RefreshDatabaseWindow  '刷新
    Next
    MsgBox "創(chuàng)建成功,請(qǐng)查看表"
    Exit Sub
errmsg:
    Set dbs = Nothing
    Set tdf = Nothing
    MsgBox Err.Description
End Sub

點(diǎn)擊這里給我發(fā)消息

10#
發(fā)表于 2017-2-28 16:42:36 來(lái)自手機(jī) | 只看該作者
可以哦,我就是access代碼里寫的刷新
來(lái)自: 微社區(qū)
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則

QQ|站長(zhǎng)郵箱|小黑屋|手機(jī)版|Office中國(guó)/Access中國(guó) ( 粵ICP備10043721號(hào)-1 )  

GMT+8, 2024-10-23 08:24 , Processed in 0.145879 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表