特殊的 listbox.Requery 视觉错误

Peculiar listbox.Requery visual bug

我有一个列表框,它根据组合框中的值过滤 AfterUpdate 事件。一切正常,除了有时不能正确显示所有记录。

但是,如果我只是单击列表框中的一行,它会自行纠正。

此外,它在出错时显示数据的方式非常奇特 - 它完整显示了最后一列,但其余数据却一团糟。

知道如何解决这个问题吗?我有一个简单的 Me.listBoxName.Requery 作为 cboObjedn_AfterEvent() 中的最后一个车道,并且在这样做之前从来没有遇到过问题。

我附上了 2 张示例图片(通常有 10 行以上,而不是 2 行)。

编辑: AfterUpdate子的代码如下:

Private Sub cboOrder_ID_AfterUpdate()

    Dim rst As DAO.Recordset

    Set rst = CurrentDb.OpenRecordset(mSQL(Me))
    Set Me.lst1Model_Operation.Recordset = rst
    Me.lst1Model_Operation.Requery

End Sub

并且:

Public Property Get mSQL(object As Object) As String
mySQL = "SELECT MO.Model_Operation_ID, MO.Model_ID, MO.Operation_Value_ID, OV.Operation_Name_ID, OL.Operation_Name AS Operácia, OM.Quantity AS [Poèet párov], " & "Format([OV].[Value], " & """0.0000 €""" & ")" & "AS Sadzba, OM.Order_ID, OM.Order_Name, ML.Model_Name" _
        & " FROM tbl2ModelsList AS ML INNER JOIN (tbl3OperationsList AS OL INNER JOIN (tbl2Operation_Value AS OV INNER JOIN (tbl1Model_Operation AS MO INNER JOIN tbl1Order_Model AS OM ON MO.Model_ID = OM.Model_ID) ON OV.Operation_Value_ID = MO.Operation_Value_ID) ON OL.Operation_ID = OV.Operation_Name_ID) ON ML.Model_ID = OM.Model_ID" _
        & " WHERE (((OM.Order_ID)=" & object.cboOrder_ID & "))"
End Property

将查询语句分配给列表框的 RowSource 属性:

Me.lst1Model_Operation.RowSource = mSQL(Me)

更改 RowSource 会更新列表框内容以响应更新后的 SELECT 语句,因此您无需再次调用 Requery你的代码。