看板 Visual_Basic 關於我們 聯絡資訊
※ 引述《williewillie (williewillie)》之銘言: : 除了在一開始使用sqlorder by xxx asc 指令排序外 : 有無辦法 : 當我點選MSHFlexGrid的欄位時 : 讓資料依照我點選的MSHFlexGrid欄位進行排序呢? 基本上我還沒學那邊,以下是書裡面光碟範例檔案, 就...... 麻煩自行研究吧 XD Option Compare Text Dim LastCol As Integer ' 上一次(最後)被按下的欄位 Dim LastSort As Integer ' 上一次(最後)排序的方式 Dim ChineseSortFactor As Integer Private Sub Form_Load() LastCol = -1 LastSort = 0 End Sub Private Sub MSHFlexGrid1_Click() ' 先判斷使用者按下的欄位(Col屬性)是否等於上一次被按下的欄位 If MSHFlexGrid1.Col <> LastCol Then ' 決定並且記錄最後排序的方式 LastSort = flexSortGenericAscending Else If LastSort = flexSortGenericAscending Then LastSort = flexSortGenericDescending Else LastSort = flexSortGenericAscending End If End If ' 設定排序方式 If MSHFlexGrid1.TextMatrix(0, MSHFlexGrid1.Col) = "姓名" Then MSHFlexGrid1.Sort = 9 Else MSHFlexGrid1.Sort = LastSort End If ' 記錄最後被按下的欄位 LastCol = MSHFlexGrid1.Col End Sub Private Sub MSHFlexGrid1_Compare(ByVal Row1 As Long, ByVal Row2 As Long, Cmp As Integer) Dim data1 As String, data2 As String ' 讀取第一列及第二列的資料 data1 = MSHFlexGrid1.TextMatrix(Row1, MSHFlexGrid1.Col) data2 = MSHFlexGrid1.TextMatrix(Row2, MSHFlexGrid1.Col) If data1 > data2 Then ' 第一列大於第二列 Cmp = IIf(LastSort = flexSortGenericAscending, 1, -1) ElseIf data1 < data2 Then ' 第一列小於第二列 Cmp = IIf(LastSort = flexSortGenericAscending, -1, 1) Else ' 第一列等於第二列 Cmp = 0 End If End Sub -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.195.121.101
williewillie:大感謝~ 11/27 12:58
williewillie:嘿~~我後來試過後 發現 有點問題 資料是會排序沒錯 11/27 17:24
williewillie:可是小到大應該是XXX7 XXX8 XXX9 11/27 17:25
williewillie:排序後卻是XXX7 XXX9 XXX8 11/27 17:25
williewillie:自答: 11/27 18:00
williewillie: MSHFlexGrid1.Col) = "姓名"改成<>"" 11/27 18:01
williewillie:沒事了 感謝~ 11/27 18:01