【问题标题】:How to add a record into table, that is related to another table?如何将与另一个表相关的记录添加到表中?
【发布时间】:2017-01-07 22:00:08
【问题描述】:

美好的一天!

我有两张桌子。

表 1

GENERIC [GE_ID / number] [GE_DATEIN / date] [GE_PERSON / number] + ...

表 2

WORKFORCE [WF_ID / number] [WF_NAME / text] [WF_SHIFT / number] + ...

表#1 中的列[GE_PERSON] 与表#2 中的列[WF_ID] 相关为多对一关系。我有一个简单的表格,可以用几个下拉框将数据添加到表#1。其中一个下拉框包含由 SQL 语句从表 #2([WF_NAME] 列)中获取的名称列表。

所以当我准备向表 #1 添加记录时,我知道从下拉框中选择的人名,但列 [GE_PERSON] 是数字,我必须添加一个等于列 [WF_ID] 的数字指向表 #2 中的名称([WF_NAME] 列)。

问题:我应该如何构建 SQL 语句 (INSERT INTO) 来完成这项工作?

谢谢!

【问题讨论】:

  • 数据库中的表维护主键(通常是自动编号)和外键。您需要将 GE_ID 添加为 Workforce 中的列,该列引用链接到 Generic 中的 GE_ID
  • 我已经有 GE_ID 列指向外键列 WF_ID。这两个列应该具有相同的名称吗?还是像我一样做得足够好?
  • 对不起。我上一条评论错了 - GE_PERSON 字段指向 WF_ID 字段(都是数字)。
  • WF_ID 列是唯一的。每次我有新记录时它都会增加。但我在 GENERIC 表的 GE_PERSON 列中有重复数字。

标签: sql ms-access relationship


【解决方案1】:

MS Access 的组合框控件允许对用户隐藏绑定的列,同时显示与隐藏字段对应的可识别数据列。请参阅MS tutorial 的这一部分。一旦你这样做了,你就会有一个相关的号码来满足你的查询需求。

隐藏和设置主键为绑定列的简要步骤:

  1. 对于[WF Names] 组合框,将[WF_ID] 包括在属性表的数据选项卡下的行源 查询中作为第一列:

    SELECT [WF_ID], [WF_NAME] 
    FROM [WORKFORCE]
    
  2. 在“数据”选项卡下,通过放置 1 使 [WF_ID] 成为绑定列。

  3. 在“格式”选项卡下,将 列数 设置为 2(查询中的每个字段或更多),但不将 列宽 设置为第一列,例如: 0; 2

现在组合框的值是下拉列表中所选[WF_NAME] 对应的[WF_ID],因此任何指向控件的查询都是有效数字:

INSERT INTO [GENERIC] ([GE_PERSON])
VALUES (Forms!formname!WFNamesComboBox)

SELECT * FROM [WORKFORCE]
WHERE [WF_ID] = Forms!formname!WFNamesComboBox

【讨论】:

  • 我不知道如何表达我对您的帮助的感激之情!所有项目都完成了,直到我想知道如何解决这个小问题!谢谢 - 你为我节省了很多时间和精力)
  • 太棒了!我很乐意提供帮助。访问的所有功能都可能有点密集。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多