排序列表框有条件地不更改行源

时间:2016-09-22 07:55:58

标签: sql sorting ms-access listbox access-vba

如果我有一个列表框,说lstABC有3列A,b& C。 并且有3个排序按钮,例如btnSortA,btnSortB,btnSortC。 有没有办法在按钮上使用on_click事件,允许用户在不改变lstABC.rowsource的情况下对lstABC进行排序?

我试图通过以下方式实现目标:

Private sub btnSortA_Click()
 lstABC.Orderby = "ColumnA ASC"
 me.lstABC.OrderByOn = True
End Sub

当然我可以构建SQL字符串并设置/重新查询lstABC.rowsource = string(对于每个按钮),但我正在寻找一些简单而有效的东西,而不是过于复杂的东西。感谢

1 个答案:

答案 0 :(得分:1)

在我看来,你不能简单地改变行源。您还可以阅读列表框中的所有行,并使用bla.html seo/bla-bla.html 以正确的顺序重新插入所有行...

.addItem

您只需添加点击事件:

Private Sub sortListbox(criteria As String)
  Dim strSQL As String

  strSQL = "SELECT A,B,C FROM TableName" _
    & " ORDER BY " & criteria

  Me.yourListboxController.RowSource = strSQL
  Me.yourListboxController.Requery
End Sub

我认为你不能比那更简单。