Πώς να δημιουργήσετε μια σύνδεση χωρίς DSN στο διακομιστή SQL για συνδεδεμένους πίνακες στην Access

Αναγν. άρθρου: 892490 - Δείτε τα προϊόντα στα οποία αναφέρεται το συγκεκριμένο άρθρο.
Για προχωρημένους: Απαιτεί εμπειρογνωμόνων κωδικοποίηση διαλειτουργικότητα και δεξιότητες πολλών χρηστών.

Αυτό το άρθρο ισχύει μόνο για ένα Βάση δεδομένων Microsoft Access (.accdb και .mdb).
Ανάπτυξη όλων | Σύμπτυξη όλων

Σε αυτήν τη σελίδα

ΕΙΣΑΓΩΓΉ

Αυτό το άρθρο περιγράφει τον τρόπο δημιουργίας μιας σύνδεσης σε Microsoft SQL Server για συνδεδεμένους πίνακες στην Microsoft Access που χρησιμοποιούν ένα όνομα προέλευσης δεδομένων (DSN). Αυτή είναι γνωστή ως μια Χωρίς DSN η σύνδεση. Τα παραδείγματα που περιέχει αυτό το άρθρο ισχύουν για Το Microsoft Office Access 2007, του Microsoft Office Access 2003 και Microsoft Access 2002.

Περισσότερες πληροφορίες

Μπορείτε να χρησιμοποιήσετε ένα DSN για τη δημιουργία συνδεδεμένων πινάκων SQL Server σε Η Microsoft Access. Αλλά όταν μετακινήσετε τη βάση δεδομένων σε έναν άλλο υπολογιστή, πρέπει να Δημιουργήστε ξανά το DSN σε αυτόν τον υπολογιστή. Αυτή η διαδικασία μπορεί να είναι προβληματική όταν κάνετε πρέπει να εκτελέσετε σε περισσότερους από έναν υπολογιστή. Όταν αυτή η διαδικασία δεν πραγματοποιείται σωστά συνδεδεμένοι πίνακες δεν μπορεί να εντοπίσει το DSN. Επομένως, συνδεδεμένους πίνακες δεν μπορεί να συνδεθεί με SQL Ο διακομιστής.

Όταν θέλετε να δημιουργήσετε μια σύνδεση με έναν πίνακα του SQL Server, αλλά χωρίς δεν θέλετε να σκληρού κώδικα DSN του Προελεύσεις δεδομένων στο παράθυρο διαλόγου Χρησιμοποιήστε μία από τις ακόλουθες μεθόδους για να δημιουργήσετε μια σύνδεση χωρίς DSN στο διακομιστή SQL.

Μέθοδος 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 η μέθοδος σάς επιτρέπει να δημιουργήσετε μια σύνδεση 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 συνδεδεμένους πίνακες της βάσης δεδομένων Access με χρήση του "myDSN" ως το DSN το όνομα.

Ιδιότητες

Αναγν. άρθρου: 892490 - Τελευταία αναθεώρηση: Κυριακή, 29 Μαΐου 2011 - Αναθεώρηση: 6.0
Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
Λέξεις-κλειδιά: 
kbprogramming kbconfig kbdatabase kbhowto kbinfo kbmt KB892490 KbMtel
Μηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:892490

Αποστολή σχολίων