当前位置: 首页 > 面试题库 >

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

龚俊捷
2023-03-14
问题内容

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

我使用下面的代码来创建链接表,而不必为每个用户设置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新手,正在尝试使用vba和Excel创建。 我想创建像下面的图像作为输入表。 我试图添加、、、的行标签,值为、和。不为SHEET1生成任何透视表。

  • 问题内容: 我想用Pandas的to_sql函数创建一个具有主键的MySQL表(在mysql表中具有主键通常是一种好习惯),如下所示: 但这会创建一个没有任何主键(甚至没有任何索引)的表。 该文档提到了参数“ index_label”,该参数与“ index”参数结合可用于创建索引,但未提及主键的任何选项。 文献资料 问题答案: 免责声明:这个答案是实验性的,而不是实用的,但也许值得一提。 我发现

  • 问题内容: 我是新手,似乎无法工作 可以在等程序中实现。当我尝试在程序中运行此语句时,出现了。 我在文档页面中检查了Derby Db Create Statements ,但是找不到这样的选择。 问题答案: 创建表,捕获并检查SQL状态代码。 完整的错误代码列表可以在这里 找到, 但我找不到 ;大概是 。 您需要的代码是。 只需运行一次代码并打印错误代码。不要忘记添加测试以确保代码有效。这样,您可

  • jOOQ具有文档中所述的CREATE TABLE语法: 我想知道如何定义哪个列属于主键?那么,在jOOQ中有没有办法用主键信息创建create TABLE语句呢? 我对SQLite的解决方案特别感兴趣,它没有语法来添加主键,所以我认为在最坏的情况下,我必须去一个特定于数据库的解决方案?

  • 问题内容: 我们计划将pdf生成实用程序从iText迁移到PDFBox(由于iText中的许可问题)。经过一些努力,我能够编写和定位文本,绘制线条等。但是创建带有嵌入在Table单元格中的文本的Tables是一个挑战,我遍历了文档,示例,Google,Stackoverflow找不到任何东西。想知道PDFBox是否提供本机支持来创建带有嵌入式文本的表格。我的最后一招是使用此链接https://gi

  • 问题内容: 查找音云轨道的持续时间。 我希望创建一个秒表功能,当您单击ID 时,该功能将开始计时毫秒,以便当该功能被“单击”一定时间后,if函数将执行某些操作。就我而言,替换图像。并且该函数将在再次单击时将其自身重置。 就像= - 我该如何设置 = ?这是毫秒吗? 问题答案: 您会看到演示代码只是一个开始/停止/重置毫秒计数器。如果您想按时进行奇特的格式化,那完全取决于您。这应该足以让您入门。 这