Comment faire un lien table Access vers SQL Server à l'aide de VBA
Je suis en train de créer un lien (ou importés) tableau dans l'Accès à un Serveur SQL server back-end. Fondamentalement, les utilisateurs de l'entreprise périodiquement besoin d'une copie de la table [SQL Rulesnew] (oui, avec de l'espace, soupir) si nous voulons leur donner un peu d'Access 2003 outil qui va faire le travail à la demande.
Je l'ai fait essayer à l'aide de Docmd.TransferDataBase acTable
mais pas de chance
ici c'est le code que j'utilise:
Sub getData()
Dim sConnStr As String
Dim oTable As TableDef
Dim sDestinationTable As String
Dim dbs As Database
Dim tbl As DAO.TableDef
Dim tblLinked As DAO.TableDef
sDestinationTable = "SQL Rulesnew"
Set dbs = CurrentDb
' source table name has a SPACE (rolleyes!)
CurrentDb.CreateTableDef sDestinationTable
' got the below from a Data Link File (UDL)
sConnStr = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=MYDBNAME;Data Source=MYSERVERNAME"
' the below also failed!
'DoCmd.TransferDatabase acLink, "ODBC Database", "ODBC;Driver={SQL Server};Server=Fos;Database=Hermes_Rep;Trusted_Connection=Yes", acTable, "[Report SQLRulesnew]", "SQLRules" & VBA.Format(Now, "ddmmyyyy")
'If DCount("*", "MSysObjects", "[Name]='[SQL Rulesnew]' AND [Type] In (1, 4, 6)") > 0 Then
If IsTable(sDestinationTable) Then
DoCmd.DeleteObject acTable, sDestinationTable
End If
Set tblLinked = dbs.CreateTableDef(sDestinationTable)
Debug.Print "Linking the " & sDestinationTable
tblLinked.Connect = sConnStr
tblLinked.SourceTableName = sDestinationTable
dbs.TableDefs.Append tblLinked
tblLinked.RefreshLink
End Sub
Function IsTable(sTblName As String) As Boolean
'does table exists and work ?
'note: finding the name in the TableDefs collection is not enough,
' since the backend might be invalid or missing
Dim x
On Error GoTo Coventry
x = DCount("*", sTblName)
IsTable = True
Exit Function
Coventry:
Debug.Print Now, sTblName, Err.Number, Err.Description
IsTable = False
End Function
malheureusement j'obtiens une erreur ne pouvait pas trouver ISAM installable sur la ligne dbs.TableDefs.Append tblLinked
que dois-je faire?
merci
Philip
Avez-vous déjà une table SQL Server liée? Si oui, vérifiez la connexion de la propriété de l'objet tabledef pour une chaîne de connexion.
J'ai trouvé la réponse et l'a affiché en dessous
J'ai trouvé la réponse et l'a affiché en dessous
OriginalL'auteur Our Man in Bananas | 2013-04-03
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé la réponse par le biais d'essais et d'erreurs...
Fondamentalement, mes noms de table dans Access peut avoir un espace sans l'aide de la [crochets],
si la commande ci-dessous fonctionne très bien (après la suppression de tout objet existant):
Cela ne fonctionne pas bien réel si l'on cherche à automatiser, essayez plutôt ceci: stackoverflow.com/a/38266765/18149
OriginalL'auteur Our Man in Bananas