DSN-yhteyden luominen linkitettyjen taulukoiden SQL Server varten Accessissa
Edistynyt: Edellyttää asiantuntijakoodausta, yhteentoimivuutta ja monikäyttöosaamista.
Tämä artikkeli koskee vain Microsoft Access -tietokantaa (.accdb ja .mdb).
Johdanto
Tässä artikkelissa kerrotaan, miten voit luoda Microsoft SQL Server -yhteyden Microsoft Accessin linkitetyille taulukoille, jotka eivät käytä tietolähteen nimeä (DSN). Sitä kutsutaan myös DSN:ä pienemmäksi yhteydeksi.
Lisätietoja
DSN:n avulla voit luoda linkitettyjä SQL Server taulukoita Microsoft Accessissa. Kun siirrät tietokannan toiseen tietokoneeseen, sinun on luotava DSN uudelleen kyseisessä tietokoneessa. Tämä toiminto voi olla ongelmallinen, kun se on suoritettava useammassa kuin yhdessä tietokoneessa. Kun tämä toimintosarja ei toimi oikein, linkitetyt taulukot eivät ehkä löydä DSN:n sijaintia. Tämän vuoksi linkitetyt taulukot eivät ehkä voi muodostaa yhteyttä SQL Server.
Kun haluat luoda linkin SQL Server taulukkoon, mutta et halua pysyväiskoodata DSN:tä Tietolähteet-valintaikkunassa, voit luoda SQL Server DSN-yhteyden jollakin seuraavista tavoista.
Tapa 1: CreateTableDef-menetelmän käyttäminen
CreateTableDef-menetelmän avulla voit luoda linkitetyn taulukon. Jos haluat käyttää tätä menetelmää, luo uusi moduuli ja lisää sitten seuraava AttachDSNLessTable-funktio uuteen moduuliin.
'//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
Lisätietoja CreateTableDef-menetelmän parametreista on kohdassa Database.CreateTableDef-menetelmä (DAO).
Jos haluat kutsua AttachDSNLessTable-funktiota, lisää koodi, joka on samankaltainen kuin jokin seuraavista koodiesimerkeistä automaattisen suoritustoiminnon makrossa tai käynnistyslomakkeessa Form_Open tapahtuma:
Kun käytät automaattinen suoritus -makroa, kutsu AttachDSNLessTable-funktiota ja välitä suoritaKoodi-toiminnossa seuraavankaltaiset parametrit.
AttachDSNLessTable ("authors", "authors", "(local)", "pubs", "", "")
Kun käytät käynnistyslomaketta, lisää koodi, joka on samankaltainen kuin seuraava Form_Open-tapahtuma.
Private Sub Form_Open(Cancel As Integer) If AttachDSNLessTable("authors", "authors", "(local)", "pubs", "", "") Then '// All is okay. Else '// Not okay. End If End Sub
Huomautus Ohjelmointilogiikkaa on muokattava, kun Access-tietokantaan lisätään useita linkitettyjä taulukoita.
Tapa 2: DAO:n käyttäminen. RegisterDatabase-menetelmä
The DAO. RegisterDatabase-menetelmän avulla voit luoda DSN-yhteyden automaattisessa suoritettavassa makrossa tai käynnistyslomakkeessa. Vaikka tämä menetelmä ei poista DSN-yhteyden vaatimusta, se auttaa sinua ratkaisemaan ongelman luomalla DSN-yhteyden koodissa. Jos haluat käyttää tätä menetelmää, luo uusi moduuli ja lisää sitten seuraava CreateDSNConnection-funktio uuteen moduuliin.
'//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
Huomautus Jos RegisterDatabase-menetelmää kutsutaan uudelleen, DSN päivitetään.
Jos haluat kutsua CreateDSNConnection-funktiota, lisää koodi, joka on samankaltainen kuin jokin seuraavista koodiesimerkeistä automaattisen suoritustoiminnon makrossa tai käynnistyslomakkeessa tapahtuman Form_Open:
Kun käytät Automaattinen suoritus -makroa, kutsu CreateDSNConnection-funktiota ja välitä suoritaKoodi-toiminnossa seuraavankaltaiset parametrit.
CreateDSNConnection ("(local)", "pubs", "", "")
Kun käytät käynnistyslomaketta, lisää koodi, joka on samankaltainen kuin seuraava Form_Open-tapahtuma.
Private Sub Form_Open(Cancel As Integer) If CreateDSNConnection("(local)", "pubs", "", "") Then '// All is okay. Else '// Not okay. End If End Sub
Huomautus
Tässä menetelmässä oletetaan, että olet jo luonut SQL Server linkitetyt taulukot Access-tietokannassa käyttämällä DSN-nimenä myDSN-nimeä.
Palaute
https://aka.ms/ContentUserFeedback.
Tulossa pian: Vuoden 2024 aikana poistamme asteittain GitHub Issuesin käytöstä sisällön palautemekanismina ja korvaamme sen uudella palautejärjestelmällä. Lisätietoja on täällä:Lähetä ja näytä palaute kohteelle