1

有了这种设计,我想创建一个功能来添加和删除联结表中的记录。

案例来自于编辑员工并选择他们可以参加的考试。左侧列表框中将是他们没有资格参加的考试(无论如何)以及他们在右侧列表框中有资格参加的考试。

表是这样的:

TABLE EmpExam 
(
  EmpID,
  ExamID
)

EmpID始终已知,但ExamID将从左侧列表框中选择。右侧列表框中的记录可能必须同时具有 theEmpID和 theExamID才能被删除。

一旦它们进入各自的框,就不需要立即删除/插入(它们可以等到表单关闭)。

在 Access 中是否有一个好的/标准的方法来完成这个?

4

2 回答 2

1

当您必须使用代码将项目添加到表中然后使用代码删除它们时,为什么要使用列表框?

对于您想要做的事情,子表单是通常的解决方案。此外,您可以使用子表单的记录克隆。请注意,您可能应该在该设置中有一个日期时间字段。此外,如果 ExamID 是唯一的,并且启用了级联删除,则从主表中删除也会从子表中删除。

于 2010-07-29T21:27:14.260 回答
0

我最终使用了两个列表框,其中包含 1 个添加按钮和 1 个删除按钮,它们触发了执行原始 SQL 的 VBA On Click 方法。

该方法看起来像这样:

If IsNull(cboInEligible.Column(1))
  Exit Sub
End If

CurrentDB.Execute ("INSERT INTO tblEmpExam (ExamID, EmpID) " & _
                   "VALUES (" & ExamID & ", " & lstInEligible.Column(1) & ")")

lstInEligible.Requery
lstEligible.Requery

删除查询类似地完成。

这两个列表框是互斥的。

SELECT EmpID, EmpName
FROM Employee
WHERE EmpID NOT IN (SELECT EmpID FROM tblEmpExam WHERE ExamID = [txtExamID]);

txtExamID 是表单上的隐藏(但对设计者来说很明显)控件,因为除了通过控件或绝对命名之外,我无法引用表单的 ExamID。

另一个列表框具有EmpID IN而不是EmpID NOT IN使其独占。

于 2010-07-30T16:17:20.663 回答