使用VBA创建表时如何指定主键

我已经使用下面给出的建议更新了代码,该建议已经过测试并且效果很好,可以为将来的用户提供快速参考。


我使用下面的代码来创建链接表,而不必为每个用户设置DSN,我如何指定主键,因为系统会询问您是否手动连接:

Dim sConnect    As String

Dim 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

回到顶部