主要流程是配置odbc字符串
创建连接表
添加主键,否则不能更新
' This function returns the full DSN-less connect string
Private Function ODBC_String() As String
' In the real world there are several constants and variable in there
ODBC_String = "ODBC;DRIVER={SQL Server};SERVER=aaa;DATABASE=bbb;UID=ccc;PWD=ccc;LANGUAGE=us_english;TRUSTED_CONNECTION=No"
End Function
Cmd.TransferDatabase acLink, "ODBC", ODBC_String(), acTable, strTable, strTable, False, True
S = "CREATE INDEX PrimaryKey ON MyViewName (MyPrimaryKeyField) WITH PRIMARY"
DB.Execute S
参考中还提供了管理主键和批量创建主键的代码
参考2提供的方式,后续也要建主键
' Deletes the old table and relinks it
' to the new schema
Sub DeleteRelinkToViewAndRename(loginInfo As AuthInfoz, tblName, tblTarget)
Dim objAccess As Access.application
Dim db As DAO.database
Dim tdf As DAO.TableDef
' Open the thing manually first...
'Shell """C:\Program Files (x86)\Microsoft Office\Office12\MSACCESS.EXE""" & " " & loginInfo.dbs
Set objAccess = GetObject(loginInfo.dbs).application
Set db = objAccess.CurrentDb
' Delete the Linked Table...THIS WORKS UNCOMMENT LATER...
objAccess.DoCmd.DeleteObject acTable, tblName
' Relink the old table to the new schema
Set tdf = db.CreateTableDef(tblName, 0, tblTarget, "ODBC;DSN=MEDSN;Database=MEDATABASE;Trusted_Connection=Yes")
' Add the new table def
db.TableDefs.Append tdf
End Sub
参考
https://stackoverflow.com/questions/32316669/how-to-programmatically-create-an-odbc-linked-table-to-a-sql-server-view-and-hav
https://stackoverflow.com/questions/38254776/selecting-a-unique-record-identifier-dynamically-with-vba/38266765#38266765
© 2017, 新之助meow. 原创文章转载请注明: 转载自http://www.xinmeow.com