Al momento sei offline in attesa che la connessione Internet venga ristabilita

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

Il supporto per Office 2003 è terminato

Il supporto Microsoft per Office 2003 è terminato l'8 aprile 2014. Questa modifica ha interessato gli aggiornamenti software e le opzioni di sicurezza. Ulteriori informazioni su come continuare a essere protetti.

IMPORTANTE: il presente articolo è stato tradotto tramite un software di traduzione automatica di Microsoft ed eventualmente revisionato dalla community Microsoft tramite la tecnologia CTF (Community Translation Framework) o da un traduttore professionista. Microsoft offre articoli tradotti manualmente e altri tradotti automaticamente e rivisti dalla community con l’obiettivo di consentire all'utente di accedere a tutti gli articoli della Knowledge Base nella propria lingua. Tuttavia, un articolo tradotto automaticamente, anche se rivisto dalla community, non sempre è perfetto. Potrebbe contenere errori di vocabolario, di sintassi o di grammatica. Microsoft declina ogni responsabilità per imprecisioni, errori o danni causati da una traduzione sbagliata o dal relativo utilizzo da parte dei clienti. Microsoft aggiorna frequentemente il software e gli strumenti di traduzione automatica per continuare a migliorare la qualità della traduzione.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 892490
Avanzate: Richiede competenze multiutente, interoperabilità e la codifica degli esperti.

In questo articolo si applica solo ai database di Microsoft Access (con estensione accdb e mdb).
INTRODUZIONE
In questo articolo viene descritto come creare una connessione a Microsoft SQL Server per le tabelle collegate in Microsoft Access che non utilizza un nome di origine dati (DSN). È anche noto come un DSN senza connessione. Gli esempi contenute in questo articolo si applicano a Microsoft Office Access 2007, Microsoft Office Access 2003 e Microsoft Access 2002.
Informazioni
È possibile utilizzare un DSN per creare tabelle collegate di SQL Server in Microsoft Access. Ma quando si sposta il database a un altro computer, è necessario ricreare il DSN su tale computer. Questa procedura potrebbe essere problematica quando è necessario eseguire più di un computer. Quando non è possibile eseguire questa procedura, è possibile che le tabelle collegate non essere in grado di individuare il DSN. Pertanto, le tabelle collegate potrebbero non essere in grado di connettersi a SQL Server.

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

Metodo 1: Utilizzare il metodo CreateTableDef

Il metodo CreateTableDef consente di creare una tabella collegata. Per utilizzare questo metodo, creare un nuovo modulo e quindi aggiungere la seguente funzione di AttachDSNLessTable per il 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 passwordFunction 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 FunctionAttachDSNLessTable_Err:        AttachDSNLessTable = False    MsgBox "AttachDSNLessTable encountered an unexpected error: " & Err.DescriptionEnd Function
Per chiamare la funzione AttachDSNLessTable , aggiungere codice simile a uno dei seguenti esempi di codice nella macro AutoExec o nell'evento Form_Open modulo avvio:
  • Quando si utilizza la macro AutoExec , chiamare la funzione AttachDSNLessTable e quindi passare i parametri che sono simili a thefollowing dall'azione RunCode.
        AttachDSNLessTable ("authors", "authors", "(local)", "pubs", "", "")
  • Quando si utilizza il form di avvio, aggiungere codice simile al seguente per l'evento Form_Open .
    Private Sub Form_Open(Cancel As Integer)    If AttachDSNLessTable("authors", "authors", "(local)", "pubs", "", "") Then        '// All is okay.    Else        '// Not okay.    End IfEnd Sub
    Nota Quando si aggiungono più di onelinked tabella al database di Access, è necessario modificare la logica di programmazione.

Metodo 2: Utilizzare DAO.Metodo RegisterDatabase

DAO .RegisterDatabase metodo consente di creare una connessione DSN nella macro AutoExec o nella maschera di avvio. Sebbene questo metodo non rimuove il requisito per una connessione DSN, consentono di risolvere il problema creando la connessione DSN nel codice. Per utilizzare questo metodo, creare un nuovo modulo e quindi aggiungere la seguente funzione di CreateDSNConnection per il 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 passwordFunction 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 FunctionCreateDSNConnection_Err:        CreateDSNConnection = False    MsgBox "CreateDSNConnection encountered an unexpected error: " & Err.Description    End Function
Nota Se il metodo RegisterDatabase viene chiamato nuovamente, viene aggiornato il DSN.

Per chiamare la funzione CreateDSNConnection , aggiungere codice simile a uno dei seguenti esempi di codice nella macro AutoExec o nell'evento Form_Open modulo avvio:
  • Quando si utilizza la macro AutoExec , chiamare la funzione CreateDSNConnection e quindi passare i parametri che sono simili a thefollowing dall'azione RunCode.
        CreateDSNConnection ("(local)", "pubs", "", "")
  • Quando si utilizza il form di avvio, aggiungere codice simile al seguente per l'evento Form_Open .
    Private Sub Form_Open(Cancel As Integer)    If CreateDSNConnection("(local)", "pubs", "", "") Then        '// All is okay.    Else        '// Not okay.    End IfEnd Sub
Nota Questo metodo presuppone che le tabelle di SQL Server collegata già stato creato nel database di Access utilizzando "myDSN" come nome del DSN.
ACC2002 ACC2003 Jet SQL Server ODBC VB VBA

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 892490 - Ultima revisione: 03/15/2015 05:59:00 - Revisione: 1.0

Microsoft Office Access 2007, Microsoft Office Access 2003, Microsoft Access 2002 Standard Edition

  • kbprogramming kbconfig kbdatabase kbhowto kbinfo kbmt KB892490 KbMtit
Feedback