【问题标题】:Primary key on linked table链接表上的主键
【发布时间】:2020-04-13 01:37:04
【问题描述】:

我有一个表链接到 Outlook 联系人。以这种方式使用它很有用,因为它始终保持最新状态。 但我需要它有一个主键,因为它对于更好的查询管理很有用。 (例如,如果我没记错的话,只有当这两个表在主键字段上连接时,您才能对两个表进行可编辑的进一步查询。)

我无法摆脱它,我只看到以下方式,但实际上并没有让我满意: 创建一个等于“outlook 联系人”但静态的表,手动(或使用 VBA)从链接的表开始更新它。但这似乎很复杂。

编辑: 为了更清楚起见,我们假设链接表名为OutlookContacts,并且为方便起见,具有以下 5 个字段:

Company
LastName
FirstName
Email
MobileNumber

【问题讨论】:

  • 我现在将我的 Microsoft Outlook 联系人(本地 Outlook 2013 联系人)链接到 Microsoft Access 2013 数据库进行测试,发现生成的链接表已经有一个名为 Normalized Subject 的主键字段。跨度>
  • 奇怪,在我链接的 Outlook 联系人中找不到“标准化主题”字段。我用的是office 2016。其他人有同样的经历吗?

标签: ms-access


【解决方案1】:

我想帮助解决您的问题是这样的:

  1. 构建一个生成表查询,从链接表中选择一个新表。即:

    SELECT 
        t1.Company
        , t1.LastName
        , t1.FirstName
        , t1.Email
        , t1.MobileNumber
        , COUNT(*) AS RowID
    INTO NewTbl   
    FROM yourTable t1
    INNER JOIN yourTable t2 ON t1.Email>=t2.Email
    GROUP BY
        t1.Company
        , t1.LastName
        , t1.FirstName
        , t1.Email
        , t1.MobileNumber
    

这只是一个示例查询,向您展示如何在运行查询时将 rowid 放入新表中。

2.然后运行另一个保存的查询:

ALTER TABLE NewTbl ADD PRIMARY KEY (RowiD)
  1. 然后为 AutoExec 创建一个宏,当任何人打开数据库时,它会按顺序触发这两者。 BOOM 解决了。

【讨论】:

  • @Andrew 生成表查询正在获取您的结果集,然后创建一个唯一标识符。它对自身进行内部连接,然后将其与来值进行比较。你需要调整你的桌子(我不知道桌子的细节)它是作为一个例子给出的。您应该能够“即插即用”它,因为您实际上只需要了解该技术。 IDK 如果您的表上已经有唯一标识符,所以我认为我应该安全并在生成表查询中创建一个
  • 谢谢,但还是无法理解“taskname”字段的含义。我已经用添加的部分编辑了我的问题,以便您可以参考我的表格字段名称
  • @Andrew 查看我编辑的帖子。您仍然需要将“yourtable”替换为实际的表名。您将需要学习如何使代码示例适应您的示例。以后会对你有很大的帮助。
  • 谢谢,我试过了,但还是不行。添加的 RowID 字段不是唯一的。还有为什么要放 "ON t1.Email>=t2.Email" ?我认为您认为电子邮件字段是唯一的,但如果它在某些记录中为空怎么办?在 Outlook 中,它不是必填字段
  • 你总是可以在 NZ() 函数中包装电子邮件
猜你喜欢
  • 2020-03-09
  • 1970-01-01
  • 2021-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多