我有一个访问表单,我希望用户选择一个AwardNumber。当他们选择奖励时,该奖励的相关文档显示在“不完整”或“完整”列表框中。然后我希望他们能够将项目从一个列表移动到另一个列表。列表框是单选的。
不完整的列表框(在设计中表示未绑定)有3列。绑定列为1,但第一列和第三列的宽度为0,因此隐藏。列表框还具有以下行源:
SELECT DocTbl.DocID, DocTbl.DocTitle, DocTbl.DocLink
FROM DocTbl
WHERE ((DocTbl.Complete <> Yes) AND (DocTbl.AwardNumber = Forms!Select_Doc_To_Code!Award_CBox.Text))
ORDER BY DocTbl.DocID
(完整的列表框具有相同的内容,但不是
DocTbl.Complete <> Yes
DocTbl.Complete = Yes
.)
Me.Incompletes.Requery
Me.Completes.Requery
这两个按钮触发代码以“移动”项目。下面是顶部按钮的代码,用于将文档从未完成项“移动”到完成列表框(即,将文档的“完成”值设置为“是”,然后重新查询列表框)。指示的行是出错的地方:
Sub Move_To_Complete_Click()
docID = Incompletes.Column(0, Incompletes.ListIndex)
Set Tbl = CurrentDb.TableRefs("DocTbl")
Set db = CurrentDb
db.Execute = "UPDATE DocTbl " & _
" SET DocTbl.Complete = Yes " & _
" WHERE DocTbl.DocID = " & docID
End Sub
换句话说,更新查询可以工作(我在表中看到更新的数据),但当我尝试重新查询两个列表框以刷新它们时,
所有物品都消失了
来自两者!。此外,如果我从组合框中选择另一个奖项,然后重新选择
奖励,列表再次正确填充,
只要运行相同的。重新查询命令!
我试过了
Me.Refresh
,
Me.Recalc
. 我还尝试再次设置行源。我想知道重新询问是否为时过早;我已经设置了断点和DoEvents,所以我不认为这是一个计时问题,但可能更多的代码需要停止运行才能重新查询。这毫无意义,因为重新询问
是
密码
我知道还有其他方法可以做到这一点(我已经尝试过,但失败了),但我真的很想知道为什么这种方法不起作用。
提前感谢!!