mshFlexGrid的数据显示完以后,怎样进行排序,不能用sql语句重新绑定?

解决方案 »

  1.   

    为什么不在SQL查询时就排序?
      

  2.   

    主要是MySql不太好用,有一些SQL函数不能用
      

  3.   

    可以的  如下:Private Sub Form_Load()  Set db = New ADODB.Connection
      db.CursorLocation = adUseClient
      db.Open "Provider=MSDASQL.1;Persist Security Info=False;Data Source=data;"
      
      Set rs = New ADODB.Recordset
      strsql = "select * from table1"  rs.Open strsql, db, adOpenDynamic, adLockBatchOptimistic
      Set MSHFlexGrid1.DataSource = rs
      rs.Close
    End SubPrivate Sub Command1_Click()
      strsql = "select * from table1 order by name"  rs.Open strsql, db, adOpenDynamic, adLockBatchOptimistic
      Set MSHFlexGrid1.DataSource = rs
    End Sub
      

  4.   

    Sort、TextMatrix 属性 (MSHFlexGrid) 示例下面的示例使用 Sort 和 TextMatrix 属性。它根据一个 ComboBox 控件的值执行一个 MSHFlexGrid 排序。要使用该示例,在窗体中放置一个 MSHFlexGrid 控件和一个 ComboBox 控件。把下面的代码粘贴到 Declarations 节,然后按 F5 键。注意 如果正在使用 MSFlexGrid,用“MSFlexGrid1”代替“MSHFlexGrid1”。Private Sub Combo1_Click()
    ' 根据排序方法选择列。
    Select Case Combo1.ListIndex 
    Case 0 To 2
    MSHFlexGrid1.Col =1
    Case 3 To 4
    MSHFlexGrid1.Col =2
    Case 4 To 8
    MSHFlexGrid1.Col =1   
    End Select
    ' 根据 Combo1.ListIndex 排序。
    MSHFlexGrid1.Sort =Combo1.ListIndex 
    End Sub
    Private Sub Form_Load()
    Dim i As Integer
    ' 用随机数据填充 MSHFlexGrid。
    MSHFlexGrid1.Cols =3 ' 创建三列。
       
    For i =1 To 11 ' 添加十项。
    MSHFlexGrid1.AddItem ""
    MSHFlexGrid1.Col =2
    MSHFlexGrid1.TextMatrix(i, 1) =SomeName(i)
    MSHFlexGrid1.TextMatrix(i, 2) =Rnd()
    Next i
    ' 用排序选择填充 combo 框。
    With Combo1
    .AddItem "flexSortNone" ' 0
    .AddItem "flexSortGenericAscending" '1
    .AddItem "flexSortGenericDescending" '2
    .AddItem "flexSortNumericAscending" '3
    .AddItem "flexSortNumericDescending" '4
    .AddItem "flexSortStringNoCaseAsending" '5
    .AddItem "flexSortNoCaseDescending" '6
    .AddItem "flexSortStringAscending" '7
    .AddItem "flexSortStringDescending" '8
    .ListIndex =0
    End With
    End Sub
    Private Function SomeName(i As Integer) As String
    Select Case i
    Case 1
    SomeName ="Ann"
    Case 2
    SomeName ="Glenn"
    Case 3
    SomeName ="Sid"
    Case 4
    SomeName ="Anton"
    Case 5
    SomeName ="Hoagie"
    Case 6
    SomeName ="Traut 'Trane"
    Case 7
    SomeName ="MereD Wah"
    Case 8
    SomeName ="Kemp"
    Case 9
    SomeName ="Sandy"
    Case 10
    SomeName ="Lien"
    Case 11
    SomeName ="Randy"
    End Select
    End Function'===========================================Sort 属性 (MSHFlexGrid)
          设置一个值,根据选定的条件排序选择的行。这一属性在设计时不可用。语法object.Sort [=value]Sort 属性的语法包含如下部分:部分 描述 
    object 一个对象表达式,其值为“应用于”列表中的一个对象。 
    Value 一个整数或常数,指定排序类型。如设置值中所述。 
    设置值value 的设置值如下所示:常数 值 描述 
    flexSortNone 0 无。不执行排序。 
    flexSortGenericAscending 1 一般升序。执行估计文本不管是字符串或者是数字的升序排序。 
    flexSortGenericDescending 2 一般降序。执行估计文本不管是字符串或者是数字的降序排序。 
    flexSortNumericAscending 3 数值升序。执行将字符串转换为数值的升序排序。 
    flexSortNumericDescending 4 数值降序。执行将字符串转换为数值的降序排序。 
    flexSortStringNoCaseAsending 5 字符串升序。执行不区分字符串大小写比较的升序排序。 
    flexSortNoCaseDescending 6 字符串降序。执行不区分字符串大小写比较的降序排序。 
    flexSortStringAscending 7 字符串升序。执行区分字符串大小写比较的升序排序。 
    flexSortStringDescending 8 字符串降序。执行区分字符串大小写比较的降序排序。 
    flexSortCustom 9 自定义。使用 Compare 事件比较行。 
    说明Sort 属性总是排序整个行。要指定排序的范围,设置 Row 和 RowSel 属性。如果 Row 和 RowSel 相同,MSHFlexGrid 将排序所有不固定行。用于排序的关键字由 Col 和 ColSel 属性决定。排序总是在一个从左到右的方向上完成。例如,如果 Col =3 且 ColSel =1,排序根据列 1 的内容,然后是列 2 、列 3 的内容来进行。用于行比较的方法由 value 决定,如设置值中的解释。设置值 9 (自定义)最灵活,但比其它设置慢,典型地大约是 10 分之一,使用这一设置的另一种可能是创建一个不可见列,用关键字填充,然后使用另一设置执行一个基于自定义的排序。这对基于日期的排序是一个好方法。
      

  5.   

    Private Sub DoSort()
        MSHFlexGrid.Col = 0
        MSHFlexGrid.ColSel = MSHFlexGrid - 1
        MSHFlexGrid.Sort = 1    '一般为升序。
    End Sub
    看看帮助,ok!
      

  6.   

    MSHFlexGrid.Col = 1 '按第一列
    MSHFlexGrid.Sort = 1'升序,等于2时为降