主要流程是配置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