Come creare una connessione a SQL Server per le tabelle collegate in Access senza DSN

Traduzione articoli Traduzione articoli
Identificativo articolo: 892490 - Visualizza i prodotti a cui si riferisce l?articolo.
Passato: Richiede il codice esperto, l'interoperabilitÓ e le competenze multiutente.

Questo articolo Ŕ applicabile solo in un database di Microsoft Access (.accdb e mdb).
Espandi tutto | Chiudi tutto

In questa pagina

INTRODUZIONE

In questo articolo si descrive come creare una connessione a Microsoft SQL Server per le tabelle collegate in Microsoft Access che non si utilizza un nome di origine di dati (DSN). Ci˛ Ŕ anche un <I> connessione </I> senza DSN. Negli esempi che questo articolo contiene applica a Microsoft Office Access 2007, Microsoft Office Access 2003 e Microsoft Access 2002.

Informazioni

Utilizzare un DSN Ŕ possibile per creare le tabelle collegate di SQL Server in Microsoft Access. Ma quando si sposta il database in un altro computer, si deve ricreare il DSN in quello computer. Questa procedura pu˛ essere problematica quando lo si deve eseguire su pi¨ un computer. Quando questa procedura non Ŕ eseguita correttamente, le tabelle collegate si possono non riuscire a individuare il DSN. Le tabelle collegate pertanto si possono non riuscire a connettersi a SQL Server.

Quando si desidera creare un collegamento a una tabella di SQL Server ma non si desidera a hard-code un DSN nella finestra di dialogo Origini dati, utilizzare uno dei seguenti metodi per creare una connessione a SQL Server senza DSN.

Metodo 1: Utilizzare il metodo CreateTableDef

Il metodo CreateTableDef consente di creare una tabella collegata. A utilizzare questo metodo, creare un nuovo modulo e quindi aggiungere la seguente funzione AttachDSNLessTable al nuovo modulo.
'//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
A richiamare la funzione AttachDSNLessTable, aggiungere il codice che Ŕ simile in uno dei seguenti esempi di codice nella macro AutoExec o nell'evento di maschera di avvio Form Open:
  • Quando si utilizza la macro AutoExec, chiamare la funzione AttachDSNLessTable e quindi passare i parametri che sono il simile a quanto segue dall'azione EseguiCodice.
        AttachDSNLessTable ("authors", "authors", "(local)", "pubs", "", "")
    
  • Quando si utilizza il modulo di avvio, aggiungere il codice che Ŕ il simile a quanto segue all'evento 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
    Nota: ╚ necessario rettificare la logica di programmazione quando si aggiunge pi¨ una tabella collegata al database di Access.

Metodo 2: Utilizzare il metodo DAO.RegisterDatabase

Il metodo DAO.RegisterDatabase consente di creare una connessione DSN nella macro AutoExec o nel form di avvio. Malgrado questo metodo non rimuove il requisito per una connessione DSN, esso risolve il problema tramite la creazione della connessione DSN nel codice. A utilizzare questo metodo, creare un nuovo modulo e quindi aggiungere la seguente funzione CreateDSNConnection al nuovo modulo.
'//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
Nota: Se il metodo RegisterDatabase si richiama nuovamente, si aggiorna il DSN.

A richiamare la funzione CreateDSNConnection, aggiungere il codice che Ŕ simile in uno dei seguenti esempi di codice nella macro AutoExec o nell'evento di maschera di avvio Form Open:
  • Quando si utilizza la macro AutoExec, chiamare la funzione CreateDSNConnection e quindi passare i parametri che sono il simile a quanto segue dall'azione EseguiCodice.
        CreateDSNConnection ("(local)", "pubs", "", "")
    
  • Quando si utilizza il modulo di avvio, aggiungere il codice che Ŕ il simile a quanto segue all'evento Form Open.
    Private Sub Form_Open(Cancel As Integer)
        If CreateDSNConnection("(local)", "pubs", "", "") Then
            '// All is okay.
        Else
            '// Not okay.
        End If
    End Sub
Nota: Questo metodo presuppone che si sono creato giÓ le tabelle di SQL Server collegato nel database di Access utilizzando "myDSN" come il nome DSN.

ProprietÓ

Identificativo articolo: 892490 - Ultima modifica: lunedý 26 marzo 2007 - Revisione: 1.5
Le informazioni in questo articolo si applicano a
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
Chiavi:á
kbprogramming kbconfig kbdatabase kbhowto kbinfo KB892490 KbMtit kbmt
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica. Nel caso in cui si riscontrino degli errori e si desideri inviare dei suggerimenti, Ŕ possibile completare il questionario riportato alla fine del presente articolo.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 892490
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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