使用VBA创建表时如何指定主键
我已经使用下面给出的建议更新了代码,该建议已经过测试并且效果很好,可以为将来的用户提供快速参考。
我使用下面的代码来创建链接表,而不必为每个用户设置DSN,我如何指定主键,因为系统会询问您是否手动连接:
Dim sConnect As StringDim db As DAO.Database
Dim tdf As DAO.TableDef
Set db = CurrentDb
Set tdf = db.CreateTableDef
tdf.Name = "dbo_vwFeedback" ' - -- --- This is the Label that you see in Access...
tdf.Connect = "ODBC;DRIVER=SQL Server;SERVER=server01\serverinstance;DATABASE=db_name;Trusted_Connection=Yes"
tdf.SourceTableName = "vwFeedback" ' - -- --- This is the actual name in SQL Server, minus the owner.
db.TableDefs.Append tdf
CurrentDb.Execute "CREATE UNIQUE INDEX PK_dbo_vwFeedback_PrimaryKey ON dbo_vwFeedback (DataSetID, FeedbackRef) WITH PRIMARY"
注意:上面是针对SQL Server VIEW的,对于SQL Server
TABLE而言是相同的,但是您不需要该CurrentDB.Execute
行(如果在服务器上正确设置了主键)。
该代码代替了链接表并手动指定主键的位置。
如果未手动或使用上述方法指定为SQL Server VIEW创建索引,则将仅获得READ
ONLY(只读)视图,并且可能会遇到返回错误数据的信息,请参见以下示例注释。
回答:
将表与您问题中的代码链接之后,您需要执行以下操作:
CurrentDb.Execute "CREATE UNIQUE INDEX SomeIndex ON SomeTable (PrimaryKeyColumn) WITH PRIMARY"
请注意,你 ,如果你链接需要这样做 - Access将自动检测主键(如Remou在他的评论中明确下文)。
但是,当您在Access中链接SQL Server ,为Access中的 指定正确的主键 。
如果您指定了错误的键(=您选择了不标识唯一记录的列)或根本没有键,Access会将视图链接为只读表(如您所注意到的)。
以上是 使用VBA创建表时如何指定主键 的全部内容, 来源链接: utcz.com/qa/403608.html