Access交流中心

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

在ACCESS中,如何写代码配置ODBC连接SQL SEVE

杨生  发表于:2010-09-02 19:07:40  
复制

 
有谁知道怎么在ACCESS里自动配置ODBC,并连接所需要的表,显示在ACCESS表窗口中,可以像操作本地表一样的打开,查询?
代码怎么写?

谢谢好心人帮我解决这个问题。

补充:
我在自己的电脑上手动配置了ODBC,连接了所需的SQL表格,可这个ACCESS客户端是要发给别人用,我不想别人再手动是去配置,想用程序自动配置,别人打开ACCESS就可以直接用了,但我不懂得在ACCESS里应该怎么写这段程序,希望好心人能帮小弟解决这个难题。

 

Top
爱在深秋 发表于:2010-10-08 21:22:55
没人帮助了,这个问题有点难,

刘东升 发表于:2010-10-22 17:09:23

看你是本地局域网用还是广域网用了,我也有这个问题想了解,看看有没有高手帮忙,呵呵



雨农 发表于:2010-10-27 12:50:45
自动配置ODBC数据源可以说是有方法,但很烦,如果电脑不多还是手动吧,要不就用vba写ODBC连接,不要链接表,那样你就达到要求了

wj.s 发表于:2010-10-28 01:34:33

    ' 链接SQL服务器
    ' ----------------------------------------------
    ' 定义服务器连接用变量
    Dim strLinkServerIP As String
    Dim strLinkServerUID As String
    Dim strLinkServerPWD As String
    Dim strLinkServerDataBase As String
    ' 定义刷新链接表用变量
    Dim myDB As Database
    Dim myTable As TableDef
    Dim myDB As Database
    Dim myTable As TableDef
    Dim i As Integer
    Dim J As Integer

    ' 获取SQL服务器的链接参数
    strLinkServerIP = SQL服务器IP或名称

    strLinkServerUID = 登陆SQL服务器的用户(一般是SA)

    strLinkServerPWD = 上述SQL服务器的用户的密码

    strLinkServerDataBase = 链接的SQL服务器数据库名称

    
    '连接根据上述值指定的SQL服务器数据库
    DoCmd.TransferDatabase acLink, "ODBC", "ODBC;DRIVER=SQL Server;SERVER=" & strLinkServerIP & ";UID=" & strLinkServerUID & ";PWD=" & strLinkServerPWD & ";DATABASE=" & strLinkServerDataBase & "", acTable, "", "", True
   

    '刷新所有链接表
    Set myDB = DBEngine.Workspaces(0).Databases(0)
    i = myDB.TableDefs.Count     'tables count
    For J = 0 To i - 1
        Set myTable = myDB.TableDefs(J)
        If myTable.Attributes = DB_ATTACHEDODBC Or myTable.Attributes = DB_ATTACHEDODBC + DB_ATTACHSAVEPWD Then
            myTable.Connect = "ODBC;DRIVER=SQL Server;SERVER=" & strLinkServerIP & ";UID=" & Nz(strLinkServerUID) & ";PWD=" & strLinkServerPWD & ";DATABASE=" & strLinkServerDataBase & ""
            myTable.RefreshLink
            Err.Clear
            Set rst = myDB.OpenRecordset(myTable.Name, dbOpenDynaset, dbSeeChanges)
            rst.Close
            If Err <> 0 Then
                If MsgBox("表[" & myTable.Name & "]未能连接上!" & vbCrLf & "是否继续链接其他表.", vbYesNo + vbQuestion, gstrMsgCaption) = vbNo Then
                    Set myDB = Nothing
                    GoTo Exit_Form_Load
                End If
            End If
        End If
    Next

 

先把所有链接表生成好,把上述代码写入启动窗体就OK了,每次启动程序就会刷新所有链接表一次,第一次启动时会有点慢,以后就不会了.

如果服务器需要改变的话可以把SQL服务器的参数写入到MDB的本地表中,需要使用时调出就可以了.

注意这个方法有点小问题,在不同的局域网中使用(如SQL服务器的名称变更了),生成MDE前最好在新的局域网环境中刷新链接表一次,并不要进行"压缩和修复数据库"操作,否则会出问题的.



雪中游 发表于:2010-10-28 11:54:47

做了一个实例,是否有用?

点击下载此附件

爱在深秋 发表于:2011-11-11 14:24:27

不好意思,大家帮我回答了,我没及时的回答,



爱在深秋 发表于:2011-11-11 14:25:54
wj.s回答的非常详细,刚开始看的时候还以为自己也问这个问题,不好意思,

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