With MSHFlexGrid2
For i = .Rows - 1 To 1 Step -1 
.TextMatrix(i, 0) = iIf .TextMatrix(i, 3) = .TextMatrix(i, 4) Then .TextMatrix(i, 5) = "正常" Else .TextMatrix(i, 5) = "不正常"If Form1.Check1.Value = 0 Then If .TextMatrix(i, 5) = "正常" Then .RemoveItem (i) '不显示"正常"的行If Form1.Check1.Value = 1 Then~~~~~~~~~~~~~现在问题是:这里数据在MSHFlexGrid2里显示不全,每次click后都会少显示几个数据
Adodc2.Recordset.Requery
Set MSHFlexGrid2.DataSource = Adodc2
MSHFlexGrid2.Refresh
End ifNext i
End With
End Sub

解决方案 »

  1.   

    请楼上仔细看以上代码 只是根据Check1 Value为0时在MSHFlexGrid里只显示 "不正常" 的行,在Check1 Value为1时在MSHFlexGrid里显示所有的行。知道的达人帮忙啊。
      

  2.   

    应该是因为MSHFlexGrid2的Rows属性的数值变化引起。你在代码中放置几个msgbox打印一下MSHFlexGrid2.Rows的值就应该能找到问题。                      ——brjd
      

  3.   

    .RemoveItem (i) 不是删除行还能是什么?你的正常与否可以根据其它两个字段判断,所以:
    ·直接根据 Check1.Value 决定 SQL 中是否需要加过滤条件;
    ·"正常"、"不正常" 可以直接在 SQL 查询中取得,这样纪录数多时就比操作 MSHFlexGrid 要快。
      

  4.   

    If Form1.Check1.Value = 0 Then If .TextMatrix(i, 5) = "正常" Then .RemoveItem (i) '不显示"正常"的行 
    改为.RowHeight(i)=0,控制行不显示