【问题标题】:Insert new record into a table from a form, using data from multiple tables使用来自多个表的数据将新记录从表单插入到表中
【发布时间】:2015-02-14 22:06:52
【问题描述】:

我对 Access 和 Databases 都很陌生,我正在努力解决如何使用表单将新记录添加到表中,该表单从多个其他表中获取选项。

我有 4 个表格,其中包含:期间列表 (tblPeriod)、学生列表 (tblNames)、科目列表 (tblAreaOfLearning) 和级别列表 (tblLevels)。

我想创建一个表单,允许用户选择时期,然后是学生,然后是科目,然后是学生在该科目上达到的水平,然后为所有这些添加 ID进入第 5 个名为 tblMaster 的表

我不知道该怎么做?我创建了一个查询,通过 ID 将所有内容链接到主表,但我不知道如何创建表单和将其插入新表的命令?

感谢所有帮助

【问题讨论】:

  • 您可以执行类似this 或this 的操作

标签: database ms-access vba ms-access-2010


【解决方案1】:

这是一个想法:

看起来你可以放弃你的查询想法,而是这样做......

创建一个带有 4 个组合框的新表单:

cboPeriodID-用户选择周期(recordsource tblPeriod查询) cboNameID- 然后是瞳孔(recordsource tblNames 查询) cboAreaOfLearningID- 然后是主题(recordsource tblAreaOfLearning 查询) cboLevelID- 然后是学生在该科目中达到的水平(记录源 tblLevels 查询)

然后有一个命令,但在底部 带有事件过程的表单以运行 SQL 到 将值插入到主表中。

Sub btnSubmit_Click()

将 strSQL 变暗为字符串

strSQL="INSERT INTO tblMaster (m_period_id,m_name_id,m_areaoflearn_id,m_level_id) VALUES (" & cboPeriodID & "," & cboNameID & "," & cboAreaOfLearningID & "," & cboLevelID & ")"

CurrentDB.Execute strSQL 结束子

【讨论】:

  • 感谢您的回复-尽管我对记录源部分感到困惑。如果我将记录源设置为 tblPeriod,它只显示 periodID。我希望它显示时段名称,因为用户不知道每个时段与什么 id 相关。另外,在sql语句中,m_代表什么?为什么需要这样做?
  • 组合框在“数据”选项卡上具有“行源”属性。使用“三点”进行查询,如“SELECT periodID, periodName FROM tblPeriods”,然后单击“格式”选项卡并在“列计数”属性中输入“2”,在“列宽”属性。然后您将能够看到您选择的 periodName 文本,但存储了 periodID。我通常在表的字段名前加上表名的首字母,所以“m_”来自“tblMaster”,这不是必需的,个人喜好。这有帮助吗?
  • 是的,我想我现在明白了...最后一件事,如果我想能够选择一个班级,并且让学生的 cobo 框只显示该班级的学生,是否存在有办法吗?即你可以根据之前组合中选择的项目来控制组合框中的记录吗?
  • 是的,你可能想看看这个,vbahowto.com/how-to-create-dynamic-combo-boxes-in-access
猜你喜欢
  • 2015-01-22
  • 1970-01-01
  • 2016-12-14
  • 2012-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-01
  • 1970-01-01
相关资源
最近更新 更多