วิธีการสร้างการเชื่อมต่อน้อยกว่า DSN กับ SQL Server สำหรับตารางที่เชื่อมโยงใน Access

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 892490 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขั้นสูง: ต้องเขียนโค้ดผู้เชี่ยวชาญ ทำงานร่วมกัน และทักษะ multiuser

บทความนี้สามารถใช้ได้เฉพาะกับฐานข้อมูล Microsoft Access (.accdb และ.mdb)
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

บทนำ

บทความนี้อธิบายวิธีการสร้างการเชื่อมต่อกับ Microsoft SQL Server สำหรับตารางที่เชื่อมโยงในการเข้าถึงของ Microsoft ที่ไม่ได้ใช้ชื่อแหล่งข้อมูล (DSN) นี่คือเรียกอีกอย่างว่าการน้อยกว่า dsnการเชื่อมต่อ ตัวอย่างที่ประกอบด้วยบทความนี้ใช้ กับ Microsoft Office Access 2007, Microsoft Office Access 2003 และ Microsoft Access 2002

ข้อมูลเพิ่มเติม

คุณสามารถใช้เป็น DSN เพื่อสร้างตาราง SQL Server ที่ถูกเชื่อมโยงในการเข้าถึงของ Microsoft แต่เมื่อคุณย้ายฐานข้อมูลไปยังคอมพิวเตอร์เครื่องอื่น คุณต้องสร้างอีกครั้งที่ DSN บนคอมพิวเตอร์เครื่องนั้น กระบวนการนี้อาจมีปัญหาเมื่อคุณจำเป็นต้องทำบนคอมพิวเตอร์มากกว่าหนึ่งเครื่อง เมื่อกระบวนการนี้จะไม่ทำได้อย่างถูกต้อง ตารางที่เชื่อมโยงอาจไม่สามารถหาตำแหน่งที่ตั้ง DSN ดังนั้น ตารางที่เชื่อมโยงอาจไม่สามารถเชื่อมต่อกับ SQL Server ได้

เมื่อคุณต้องการสร้างการเชื่อมโยงตาราง SQL Server แต่ไม่ต้องการรหัสฮาร์ DSN เป็นในการแหล่งข้อมูลกล่องโต้ตอบ ใช้วิธีต่อไปนี้เพื่อสร้างการเชื่อมต่อน้อยกว่า DSN กับ SQL Server อย่างใดอย่างหนึ่ง

วิธีที่ 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
    หมายเหตุ:คุณต้องปรับตรรกะการเขียนโปรแกรมของคุณเมื่อคุณเพิ่มมากกว่า หนึ่งตารางที่มีการเชื่อมโยงไปยังฐานข้อมูลการเข้าถึง

วิธีที่ 2: ใช้เมธอด DAO.RegisterDatabase

กระบวนการDAO.RegisterDatabaseวิธีที่ช่วยให้คุณสามารถสร้างการเชื่อมต่อ DSN ในนั้นAutoExecแมโครหรือ ในแบบฟอร์มการเริ่มต้นใช้งาน แม้ว่าวิธีนี้ไม่เอาข้อกำหนดสำหรับการเชื่อมต่อแบบ 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
หมายเหตุ:วิธีนี้อนุมานว่า คุณได้สร้างตารางของ sql server ที่เชื่อมโยงในฐานข้อมูลการเข้าถึง โดยการใช้ "myDSN" เป็น DSN ชื่อ

คุณสมบัติ

หมายเลขบทความ (Article ID): 892490 - รีวิวครั้งสุดท้าย: 15 มกราคม 2554 - Revision: 4.0
ใช้กับ
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
Keywords: 
kbprogramming kbconfig kbdatabase kbhowto kbinfo kbmt KB892490 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:892490

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com