排序列表框有条件地不更改行源
问题描述:
如果我有一个列表框说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 =字符串(每个按钮),但我寻找的东西简单而高效,不会过分复杂。谢谢
答
在我看来,你不能简单比改变行来源。你也可以在列表框中读取所有的行并重新插入所有行与.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
而你只需要添加的单击事件:
Private Sub btnSortA_Click()
Call sortListbox("A")
End Sub
Private Sub btnSortB_Click()
Call sortListbox("B")
End Sub
Private Sub btnSortC_Click()
Call sortListbox("C")
End Sub
我不认为你可以比这更简单。
+0
谢谢,希望有一些隐藏的访问构建功能,我错过了...无论如何,现在我只需要将其余的代码与此对齐 – Rhdr
也许如果有一种方法来改变SQL中的排序顺序来排序IIF(某些条件)是真的...并将其构建到原始行源中 – Rhdr
这看起来就像这样'SELECT A,B,C FROM TableName IIf(chk_A OR chk_B OR chk_C,IIf(chk_A,“ORDER BY A;”,IIf(chk_B,“ORDER BY B;”,“ORDER BY C;”),“;”)'但在这种情况下,将使用复选框,而不是按钮 – LostReality
这看起来很有希望,更符合我的想法,现在如果我可以让它工作 – Rhdr