Office学院 加入收藏
Office学院 Access Word Excel Powerpoint Wps Access Outlook Tags  
您现在的位置: Office学院 - Access - 如何在 Access 中创建 DSN 并连接到 SQLServer 链接表

如何在 Access 中创建 DSN 并连接到 SQLServer 链接表

添加记录: 如何在 Access&n 类别: Access 发布日期: 2006.03.01


发布日期:
2007-6-7

作    者:微软

摘    要:如何 MicrosoftAccess 不使用数据源名称 (DSN) 中为链接表创建一个连接到 MicrosoftSQLServer。 这将也称作 DSN 的连接。 对本文包含示例适用于 Microsoft Office Access 2007年、 到 Microsoft Office Access 2003, 和到 Microsoft Access 2002。

正    文:

   本指南介绍了如何 MicrosoftAccess 不使用数据源名称 (DSN) 中为链接表创建一个连接到 MicrosoftSQLServer。 这将也称作 DSN 的连接。 对本文包含示例适用于 Microsoft Office Access 2007年、 到 Microsoft Office Access 2003, 和到 Microsoft Access 2002。
可用于 DSN MicrosoftAccess 中创建链接 SQLServer 表。 但当您将数据库移动到其他计算机, 必须重新创建该计算机上 DSN。 当需要多个计算机上执行该过程可能有问题。 当正确, 不执行此过程链接表可能无法以定位 DSN。 因此, 链接表可能无法以连接到 SQLServer。

您要创建链接到 SQLServer 表但不想硬编码到 数据源 对话框中, DSN 时使用下列方法之一来创建 DSN 的连接到 SQLServer。

一、解决方案如下:

方法 1: 使用 CreateTableDef 方法
CreateTableDef 方法允许您创建链接表。 要使用此方法, 创建一个新模块, 然后将以下 AttachDSNLessTable 函数添加到新模块。

'//Name     :   AttachDSNLessTable
'//Purpose  :   Create a linked table to SQL Server without using a DSN
'//Parameters
'//     stLocalTableName: Name of the table that you are creating in the current database
'//     stRemoteTableName: Name of the table that you are linking to on the SQL Server database
'//     stServer: Name of the SQL Server that you are linking to
'//     stDatabase: Name of the SQL Server database that you are linking to
'//     stUsername: Name of the SQL Server user who can connect to SQL Server, leave blank to use a Trusted Connection
'//     stPassword: SQL Server user password
Function AttachDSNLessTable(stLocalTableName As String, stRemoteTableName As String, stServer As String, stDatabase As String, Optional stUsername As String, Optional stPassword As String)
    On Error GoTo AttachDSNLessTable_Err
    Dim td As TableDef
    Dim stConnect As String
   
    For Each td In CurrentDb.TableDefs
        If td.Name = stLocalTableName Then
            CurrentDb.TableDefs.Delete stLocalTableName
        End If
    Next
     
    If Len(stUsername) = 0 Then
        '//Use trusted authentication if stUsername is not supplied.
        stConnect = "ODBC;DRIVER=SQL Server;SERVER=" & stServer & ";DATABASE=" & stDatabase & ";Trusted_Connection=Yes"
    Else
        '//WARNING: This will save the username and the password with the linked table information.
        stConnect = "ODBC;DRIVER=SQL Server;SERVER=" & stServer & ";DATABASE=" & stDatabase & ";UID=" & stUsername & ";PWD=" & stPassword
    End If
    Set td = CurrentDb.CreateTableDef(stLocalTableName, dbAttachSavePWD, stRemoteTableName, stConnect)
    CurrentDb.TableDefs.Append td
    AttachDSNLessTable = True
    Exit Function

AttachDSNLessTable_Err:
   
    AttachDSNLessTable = False
    MsgBox "AttachDSNLessTable encountered an unexpected error: " & Err.Description

End Function

要调用 AttachDSNLessTable 函数, 添加代码是类似于之一以下代码示例在 Autoexec 宏中或启动窗体 Form_Open 事件中: • 使用 Autoexec, 时调用 AttachDSNLessTable 函数, 并然后传递参数是从 RunCode 操作类似于以下。    

AttachDSNLessTable ("authors", "authors", "(local)", "pubs", "", "")


• 当您使用启动窗体, 添加是类似于以下以 Form_Open 事件代码。

Private Sub Form_Open(Cancel As Integer)
    If AttachDSNLessTable("authors", "authors", "(local)", "pubs", "", "") Then
        '// All is okay.
    Else
        '// Not okay.
    End If
End Sub
向 Access 数据库添加多个链接表时 注意 您必须调整编程逻辑。
 

方法 2: 使用 DAO.RegisterDatabase 方法
DAO.RegisterDatabase 方法允许您在 Autoexec 宏中或启动窗体中创建 DSN 连接。 尽管此方法不删除的 DSN 连接, 要求它不帮助您通过在代码中创建 DSN 连接解决问题。 要使用此方法, 创建一个新模块, 然后将以下 CreateDSNConnection 函数添加到新模块。

'//Name     :   CreateDSNConnection
'//Purpose  :   Create a DSN to link tables to SQL Server
'//Parameters
'//     stServer: Name of SQL Server that you are linking to
'//     stDatabase: Name of the SQL Server database that you are linking to
'//     stUsername: Name of the SQL Server user who can connect to SQL Server, leave blank to use a Trusted Connection
'//     stPassword: SQL Server user password
Function CreateDSNConnection(stServer As String, stDatabase As String, Optional stUsername As String, Optional stPassword As String) As Boolean
    On Error GoTo CreateDSNConnection_Err

    Dim stConnect As String
   
    If Len(stUsername) = 0 Then
        '//Use trusted authentication if stUsername is not supplied.
        stConnect = "Description=myDSN" & vbCr & "SERVER=" & stServer & vbCr & "DATABASE=" & stDatabase & vbCr & "Trusted_Connection=Yes"
    Else
        stConnect = "Description=myDSN" & vbCr & "SERVER=" & stServer & vbCr & "DATABASE=" & stDatabase & vbCr
    End If
   
    DBEngine.RegisterDatabase "myDSN", "SQL Server", True, stConnect
       
    '// Add error checking.
    CreateDSNConnection = True
    Exit Function
CreateDSNConnection_Err:
   
    CreateDSNConnection = False
    MsgBox "CreateDSNConnection encountered an unexpected error: " & Err.Description
   
End Function

注意 如果调用 RegisterDatabase 方法再次, DSN 更新。

要调用 CreateDSNConnection 函数, 添加代码是类似于之一以下代码示例在 Autoexec 宏中或启动窗体 Form_Open 事件中: • 使用 Autoexec, 时调用 CreateDSNConnection 函数, 并然后传递参数是从 RunCode 操作类似于以下。   

  CreateDSNConnection ("(local)", "pubs", "", "")


• 当您使用启动窗体, 添加是类似于以下以 Form_Open 事件代码。

 Private Sub Form_Open(Cancel As Integer)
    If CreateDSNConnection("(local)", "pubs", "", "") Then
        '// All is okay.
    Else
        '// Not okay.
    End If
End Sub
 
注意 此方法假定您有创建链接 SQLServer 表 Access 数据库中通过使用 " myDSN " 作为 DSN 名称。
回到顶端

二、本文摘自:http://support.microsoft.com/kb/892490/zh-cn

顶一下
上一篇:压缩Access数据库后不重置自动编号字段
下一篇:如何解决运行查询、窗体或报表时出现键入参数值对话框问题
Tags: word Access Office 函数

相关信息
  • 压缩Access数据库后不重置自动编号字段
  • 如何设置数据库权限
  • 如何按权限设置共享
  • 简述宏与VBA有何差异
  • 简述VBA与VB的区别
  • 如何将宏转换为VBA
  • 如何区分“!”及“.”符号在ACCESS中的差别
  • Access系统保全的原理
  • 如何多用户环境中保护链接表
  • 2007 Office —— 通过快捷键访问 Ribbon
  • 如何指定TransferSpreadsheet方法中工作簿中的工作表
  • 用UMV开发平台开发管理信息系统小结
  • ACCESS培训学习小结-老潘
  • 提高ACCESS查询性能的方法
  • 如何合理调整窗体的布局
  • 如何解决运行查询、窗体或报表时出现键入参数值对话框问题
  • 压缩、修复或恢复 Access 文件的疑难解答
  • 关于在多个 Access 版本中使用 Access 文件
  • 创建 Access 2007 查阅字段列
  • Access 2007 表的设计
  • 创建 Access 2007 表
  • 如何利用快捷键来访问ACCESS 2007的功能区?
  • Access 2007 功能区运用祥细讲解
  • Access 2007 以PDF 格式保存文件
  • Access 2007 微型工具栏
  • Access 2007 状态栏
  • Access 2007 选项卡式文档
  • Access 2007 导航窗格
  • 创建 Access 2007 查阅字段列
  • Access 2007 表的设计














  • 生日密码
    血型分析
    生肖分析



    制作单位 Office学院 © 版权所有


    联系我们 关于我们 友情链接 站点地图 免责声明


    Office学院,致力于打造专业的OFFICE应用交流平台。