向表单添加新记录时清除列表框

时间:2016-12-16 10:11:53

标签: listbox access-vba

我正在使用Access 2007.我有一个表单(孩子的详细信息),其中包含一个列出孩子特殊需求的列表框。列表框与子表和具有受控特殊需求列表的表存在多对多关系。列表框的RowSource是

{{1}}

当我尝试添加新记录时,列表框内容不会清除,继续锁定到与现有记录相关的值。

如何清除列表框的内容,以便用户可以添加与新孩子相关的需求?

随后,我发现在表单上从记录移动到记录时,列表框内容仍然是出现的第一条记录的内容。看起来我有一个严重的错误,大概是在我的SQL中!

2 个答案:

答案 0 :(得分:1)

rowsource没有引用表单中显示的当前子项。

我认为你需要像

这样的东西
SELECT Child.ID, Need.Category 
FROM Need INNER JOIN 
    (Child INNER JOIN [Child-Need] ON Child.ID=[Child-Need].[Need FK]) 
    ON Need.ID=[Child-Need].[Need ID] 
WHERE Child.ID = Forms!frmChild!ID
ORDER BY [Category];

(用表单名称替换frmChild)。

然后您需要在表单的myListbox.Requery事件中使用OnCurrent,以便在移动到其他记录时显示当前数据。

编辑:如果是子表单,则类似

WHERE Child.ID = Forms!frmFamily!frmChild.Form!ID

请参阅Refer to Form and Subform properties and controls

答案 1 :(得分:0)

尝试在表单加载中使用以下代码:

 Dim intItemsInList As Integer
 Dim intCounter As Integer

 intItemsInList = Me![lstTest].ListCount

 For intCounter = 0 To intItemsInList - 1
   Me![lstTest].RemoveItem 0
 Next