現在我就是在調用以下這個SUB后就用MSHFlexGrid1.RemoveItem (j)﹐把 MSHFlexGrid1上所有的Item都remove掉了﹐后來再掉用這個SUB﹐每次在MSHFlexGrid1上都只能顯示1個資料﹐不知道為什么?用Set MSHFlexGrid1.DataSource = RS代替 MSHFlexGrid1.AddItem還是同樣的結果﹐小妹先謝了﹗ 
    Private Sub WWWW()
        SQL = "SELECT  ......"
        Set RS = DB.Execute(SQL)
        If Not RS.EOF Then
            MSHFlexGrid1.ColWidth(0) = 800
            MSHFlexGrid1.ColWidth(1) = 2100
            MSHFlexGrid1.ColWidth(2) = 2500
            MSHFlexGrid1.ColWidth(3) = 600
            MSHFlexGrid1.ColWidth(4) = 1100
            MSHFlexGrid1.ColWidth(5) = 2500
            MSHFlexGrid1.Refresh
            MSHFlexGrid1.AddItem RS(0).Name & Chr(9) & RS(1).Name & Chr(9) & RS(2).Name
            Do While Not RS.EOF
                MSHFlexGrid1.AddItem RS(0) & Chr(9) & RS(1) & Chr(9) & RS(2) 
                RS.MoveNext
            Loop
    End Sub

解决方案 »

  1.   

    在 Do While Not RS.EOF 前,先将记录集移到最初位置 RS.MoveFirst 。
      

  2.   

    原因:在循环里MSHFlexGrid1的行每次要加1。建议:直接赋就行了,不用一行行放上去:
          Set MSHFlexGrid1.DataSource = 记录集^_^
      

  3.   

    用additem的加载速度是比较快的。
    只不过加上一句
    MSHFlexGrid1.Rows = 1    Do While Not RS.EOF        MSHFlexGrid1.AddItem MSHFlexGrid1.Rows & Chr(9) _
                              & "" & Chr(9) _
                        
            rs.MoveNext
        Loop
      

  4.   

    Set MSHFlexGrid1.DataSource = 记录集   MSHFlexGrid1.FormatString = "  |小猪猪 | 小白兔 | 海龟 | 大笨象 | 猴子"
      

  5.   

    問題已經解決了﹐謝謝各位﹗結合   huangjianyou(小健) 的﹕"原因:在循环里MSHFlexGrid1的行每次要加1。" daisy8675(莫依) 的﹕"MSHFlexGrid1.Rows = 1" 不過要改成﹕"MSHFlexGrid1.Rows = 0" 就可以了﹗ 謝謝各位﹗