Access交流中心

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

VBA创建的SQL链接表如何保存用户名和密码?

杨清雄  发表于:2012-04-03 22:09:42  
复制

我从网上抄了一段代码,改后希望实现在access里自动连接SQL表。以下代码能运行并自动创建SQL链接表了,但是
每次重新打开access,用到链接表都要重新输入一次 用户名和密码。我原来在access里不用代码、手工做的SQL链接表,有个选项“保存密码”,勾选后就不需要每次输入用户名和密码了

(注:我把SQL源表和ACCESS目标表名,还有数据库名 放在表[ZZ11-SQL-Access对应表]中 )



代码如下:



Public Function LinkSQLTable(ServerIP As String, User As String, Optional PSW As String)
 '连接指定的数据库中的表
 '使用方法:Call 公用模块.LinkSQLTable("192.168.18.2","sa","1234")
 '使用方法:Call 公用模块.LinkSQLTable("127.0.0.1","sa")
 Dim dbs As Database
 Dim tdf As TableDef
 
 Dim Lianjie As String
 Dim SourceTbl, TargetTbl As String
 Dim con As Object
 Dim rs As Object
 Dim stSql As String
 Dim intI As Integer
 Dim SQLDBname As String
 
 LinkSQLTable = False
 
If PSW <> "" Then
  Lianjie = "ODBC;DRIVER=SQL Server;SERVER=" & ServerIP & ";UID=" & User & ";" & "PWD=" & PSW & ";" & "DATABASE="
Else
  Lianjie = "ODBC;DRIVER=SQL Server;SERVER=" & ServerIP & ";UID=" & User & ";PWD=;" & "DATABASE="
End If

    ' Open the table
    Set con = Application.CurrentProject.Connection
    stSql = "SELECT * FROM [ZZ11-SQL-Access对应表]"
    Set rs = CreateObject("ADODB.Recordset")
    rs.Open stSql, con, 1   ' 1 = adOpenKeyset

    rs.MoveFirst

  '以下是进行循环计算的程序
 
While (Not (rs.EOF))
   SourceTbl = rs![SQL表格]
   TargetTbl = rs![Access 表格]
   SQLDBname = rs![数据库名]
  
   DoCmd.DeleteObject acTable, TargetTbl '删除原链接表
 
Set tdf = CurrentDb.CreateTableDef(SourceTbl)
    tdf.Connect = Lianjie & SQLDBname & ";"
    tdf.SourceTableName = SourceTbl
    tdf.NAME = TargetTbl
   
    CurrentDb.TableDefs.Append tdf  '添加链接表
    rs.MoveNext
Wend
                
rs.close
Set rs = Nothing
Set con = Nothing

Set dbs = Nothing

LinkSQLTable = True
 
End Function




请哪位大侠帮我看看,如何才能把用户名和密码保存,请不吝赐教呀 !

点击下载此附件

 

Top
小魏 发表于:2012-04-22 15:49:51

简单问题复杂化.

一行代码就可以搞定的事.

 

Public Function LinkSQLserverTable(BDtableName As String, ServerTableName As String) As Boolean  '此程序可以用于创建新的SQL数据库的链接表
    '20101224创建此程序
    '?LinkSQLserverTable("dbo_AdoXDataTypeEnum2","dbo.AdoXDataTypeEnum")
    On Error Resume Next

    DoCmd.TransferDatabase acLink, "ODBC", "ODBC;DRIVER=SQL Server;SERVER=ZEALWOOPC;UID=sa;PWD=123;APP=Microsoft Office 2010;DATABASE=CZLinsql2008", acTable, ServerTableName, BDtableName, True, True
    Debug.Print Err.Description
End Function

 

把数据源的参数及用户密码等填成自己的实际数据就可以用了.



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