2016-09-22 2 views
0

목록 상자에 3 열 A가있는 lstABC가 있으면 & c라고 입력하십시오. 그리고 세 개의 정렬 버튼이 있습니다. btnSortA, btnSortB, btnSortC. 사용자가 매번 lstABC.rowsource를 변경하지 않고 lstABC를 정렬 할 수있는 버튼에 on_click 이벤트를 사용하는 방법이 있습니까?정렬 목록 상자 행 원본을 변경하지 않고 조건부로

나는이의 라인에 뭔가를 달성하기 위해 노력했다 :

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

내가 (모든 버튼) SQL 문자열과 설정/다시 쿼리의 lstABC.rowsource = 문자열을 만들 수 있지만, 내가 뭔가를 찾고 있어요 물론 단순하고 효율적으로 복잡하지는 않습니다. 감사합니다

+0

SQL에서 정렬 순서를 변경하여 IIF (일부 조건)를 정렬하는 방법이있는 경우 아마도 ... 원래의 행 소스에 이것을 빌드하십시오. – Rhdr

+0

그러면 SELECT A, B, C와 같이 보일 것입니다. FROM TableName IIf (chk_A OR chk_B 또는 chk_C, IIf (chk_A, "ORDER BY A;", IIf (chk_B, "주문 BY B", "주문 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

관련 문제