2016-09-22 9 views
0

リストボックスにlstABCという3つの列A、b & cがある場合は、 そして、3つのソートボタン、btnSortA、btnSortB、btnSortCがあります。 lstABC.rowsourceを毎回変更せずにlstABCをソートできるボタンでon_clickイベントを使用する方法はありますか?リストボックスを並べ替えるRow-sourceを変更せずに条件付きで

私は、この行で何かを達成しようとしていた:私は、SQL文字列と(すべてのボタンの)セット/再クエリlstABC.rowsource =文字列を構築することができ

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

は確かに、しかし、私は何かを探しています単純で効率的なものであり、過度の複雑さを伴わないものです。ありがとう

+0

SQLのソート順を変更してIIFで並べ替える方法がある場合(条件によっては)、真である...これを元のrowsourceに組み込む – Rhdr

+0

これは、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

+0

これは有望で、私が思っているものと一線を画しています。今はちょうどそれを働かせたらいいですか? – Rhdr

答えて

1

私の意見では、行のソースを変更するよりも簡単にすることはできません。また、リストボックス内のすべての行を読み、.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

関連する問題