Access911.net   |   a9BBS   |   OTaA System  
  搜索文章:  
Access911欢迎您光临  
   主页      上传      繁體版       论坛     
设为首页  |  加入收藏   
  
你现在的位置:文章索引 -> 文章分类 -> 表  
 首页|  近日更新|  下载  |  文章索引  |  搜索|  术语|  承接工程|  
 
系统正在加载内容,请耐心等待...
 
 查询
 窗体
 报表
 
 
 VBA
 函数
 ADO/DAO/ADO.NET
 API
 ADP
 安全
 发布
 OA
 ASP/ASP.NET
 其他语言
 控件
 DELPHI
 C#/.Net
 本站
 其他
 小例程
 常用软件
 参考文档
 业主作品
 网友大作
 
 
友情链接
 access911.net
 
访问人次
 1701844
 
站长 E-Mail
 net911@sina.com
 access911@gmail.com
 
RSS 订阅

显示附加信息 >>>

如何用代码创建链接表链接到 SQL SERVER 并且保存密码?

作者:cg1  摘自:access911.net  :cg1  更新日期:2012-9-17  浏览人次:

 

问题:

以前在文章中写过如何创建、修改、删除链接表,但是如何在创建链接到 SQL SERVER 服务器的链接表时保存密码呢?

手动创建链接表的时候会有保存密码的选项,编程创建的时候该如何用代码设置该选项呢?

 


回答:


'运行下述代码前请先引用:
'Microsoft ADO Ext. 2.8 for DDL and Security
'Microsoft DAO 3.6 Object Library

'注意,下述代码中 CurrentDB 和 CurrentProject.Connection 为 ACCESS 特有对象,
'如果您需要在 VB6 ASP 等环境运行,请自行更改为已经OPEN的 DAO.Database 对象和 ADODB.Connection 对象


'用 DAO 创建链接到SQL SERVER的链接表,并且保存密码

Sub CreateLinkTable_DAO()
    Dim dbs As DAO.Database
    Dim tdl As DAO.TableDef

    Set dbs = CurrentDb
    '请注意 dbAttachSavePWD 常量,该常量是 DAO.TableDef.Attributes 中的一个常量
    '下面的 "dbo_apilog" 是本地数据表名,可以随意定义

    Set tdl = dbs.CreateTableDef("dbo_apilog", dbAttachSavePWD)

    'tdl.Connect = "ODBC;DSN=DNS名;Description=描述;UID=SQLSERVER登录账号;PWD=SQLSERVER登录密码;APP=Microsoft Office 2003;WSID=CHENGE-W7;DATABASE=数据库名"
    tdl.Connect = "ODBC;DRIVER=SQL Server;UID=sql登录账号;PWD=sql登录密码;APP=Microsoft Office 2003;WSID=CHENGE-W7;SERVER=sql服务器地址;DATABASE=数据库名"
    '定义sql数据库中的表名,注意需要带所有者名称,一般是 dbo
    tdl.SourceTableName = "dbo.ApiLog"
    dbs.TableDefs.Append tdl
    tdl.RefreshLink
    
    dbs.Close
    Set dbs = Nothing
End Sub
 

'通过代码检验“保存密码”选项勾选前后的属性值的不同
Function TestAttributes()
    Dim tdl As DAO.TableDef
    Dim dbs As DAO.Database
    Set dbs = CurrentDb
    
    Set tdl = dbs.TableDefs("dbo_apilog")
    '当使用了 dbAttachSavePWD 常量后可以在 Connect 中看到 UID PWD 。
    Debug.Print tdl.Connect
    'dbAttachSavePWD的常量值为131072
    Debug.Print dbAttachSavePWD
    '可以对比“保存密码”选项勾选前后的Attributes值,会发现正好相差 131072
    Debug.Print tdl.Attributes
End Function

'用 ADOX 建立SQL SERVER 链接表,并保存密码
Sub CreateLinkTable_ADOX_ErrorCode()
    
    Dim tbl As New ADOX.Table
    Dim catDB As ADOX.Catalog
    Set catDB = New ADOX.Catalog
    catDB.ActiveConnection = CurrentProject.Connection
    Set tbl.ParentCatalog = catDB
    
    '定义本地数据表名,可以随意定义
    tbl.Name = "dbo_apilog"
    tbl.Properties("Temporary Table") = False
    tbl.Properties("Jet OLEDB:Create Link") = True
    '“保存密码”选项
    tbl.Properties("Jet OLEDB:Cache Link Name/Password") = True
    '服务器上数据表名,要包含所有者名,一般为 dbo
    tbl.Properties("Jet OLEDB:Remote Table Name") = "dbo.ApiLog"
    tbl.Properties("Jet OLEDB:Link Provider String") = "ODBC;DRIVER=SQL Server;UID=;PWD=;APP=Microsoft Office 2003;WSID=CHENGE-W7;SERVER=;DATABASE="
    tbl.Properties("Jet OLEDB:Link Datasource") = ""
    catDB.Tables.Append tbl
    
End Sub

'检测已经创建的链接表的各项属性。
Function TestCacheLinkNamePassword()
    Dim tbl     As New ADOX.Table
    Dim catDB   As ADOX.Catalog
    Set catDB = New ADOX.Catalog
    catDB.ActiveConnection = CurrentProject.Connection
On Error Resume Next
    Set tbl = catDB.Tables("dbo_apilog")
    Dim i As Long
    For i = 0 To tbl.Properties.Count
        Debug.Print tbl.Properties(i).Name
        Debug.Print tbl.Properties(i).Value
        Debug.Print "--------------"
    Next

End Function


 


本站文章旨在为该问题提供解决思路及关键性代码,并不能完成应该由网友自己完成的所有工作,请网友在仔细看文章并理解思路的基础上举一反三、灵活运用。

access911.net 原创文章,作者本人对文章保留一切权利。
如需转载必须征得作者同意并注明本站链接

 

 
相关文章
     没有手动相关文章
     如何解决共享目录加访问密码后导致链接表出错问题?
     如何用 VBA 新建链接表
     如何链接有密码保护的数据库?如何链接打开加密的数据库?
     如何使用ADOX/DAO刷新/更新/删除并重定义链接表 
     如何用代码重新链接 ODBC 链接表?1
 
评论
     查看或发表更多的评论,请单击这里。
 
 
 
 
 
   
  Access911.net   |   a9BBS   |   OTaA System   |
建站日期:2000年4月2日  |  设计施工:陈格 ( access911 & cg1 )
 Copyright © 2000 - 2003 COMET, 陈格 保留所有权利