我写的一段代码但是MSFlexGrid就是什么都不显示!!请问原因!!谢谢!!Private Sub Form_Load()
Dim sql As String
If power = "guest" Then
    a_2.Enabled = False
    c_2.Enabled = False
    f_1.Enabled = False
End If
rs1.CursorLocation = adUseClient      (rs1为全局量)
sql = "select 基本情况.编号,基本情况.姓名,基本情况.工作部门 from 基本情况"
rs1.Open sql, conn, adOpenKeyset, adLockPessimistic
row_num = rs1.RecordCount
col_num = 3
gc1
gc2
show_all = True
If rs1.RecordCount > 0 Then
  gc4
  MSFlexGrid1.Clear
  gc2
  gridrow = 0
  Do Until rs1.EOF
     gc3
  Loop
  MSFlexGrid1.TopRow = 1
Else
  MsgBox "错误!没有任何记录!", vbOKOnly + vbExclamation, ""
End If
End Sub
Public Sub gc1()
Dim i As Integer
On Error GoTo here1
MSFlexGrid1.ScrollBars = 2
MSFlexGrid1.FixedCols = 0
MSFlexGrid1.Rows = row_num + 1
MSFlexGrid1.Cols = col_num
MSFlexGrid1.SelectionMode = flexSelectionByRow
For i = 0 To row_num
   MSFlexGrid1.RowHeight(i) = high
Next
MSFlexGrid1.ColWidth(0) = 1500
MSFlexGrid1.ColWidth(1) = 2000
MSFlexGrid1.ColWidth(2) = 2000
Exit Sub
here1:
  MsgBox Err.Description
End SubPublic Sub gc2()
On Error GoTo here2
MSFlexGrid1.Row = 0
MSFlexGrid1.Col = 0
MSFlexGrid1.Text = "职工编号"
MSFlexGrid1.Col = 1
MSFlexGrid1.Text = "职工姓名"
MSFlexGrid1.Col = 2
MSFlexGrid1.Text = "工作部门"
Exit Sub
here2:
  MsgBox Err.Description
End SubPublic Sub gc3()
On Error GoTo here3
gridrow = gridrow + 1
MSFlexGrid1.Row = gridrow
MSFlexGrid1.Col = 0
If Not IsNull(rs1!编号) Then
  MSFlexGrid1.Text = "  " & rs1!编号
Else
  MSFlexGrid1.Text = ""
End If
MSFlexGrid1.Col = 1
If Not IsNull(rs1!姓名) Then
  MSFlexGrid1.Text = "  " & rs1!姓名
Else
  MSFlexGrid1.Text = ""
End If
MSFlexGrid1.Col = 2
If Not IsNull(rs1!工作部门) Then
  MSFlexGrid1.Text = "  " & rs1!工作部门
Else
  MSFlexGrid1.Text = ""
End If
rs1.MoveNext
Exit Sub
here3:
 MsgBox Err.Description
End SubPublic Sub gc4()
On Error GoTo here4
Dim i As Integer
Dim j As Integer
For i = 1 To row_num
  For j = 0 To col_num - 1
    MSFlexGrid1.Row = i
    MSFlexGrid1.Col = j
    MSFlexGrid1.Text = ""
  Next
Next
Exit Sub
here4:
  MsgBox Err.Description
End Sub

解决方案 »

  1.   

    with msflexgrid1  
              .redraw=false
              For i = .FixedRows To .Rows - 1
                    .TextMatrix(i, 1) = FillRs(0)
                    .TextMatrix(i, 2) = FillRs(1)
                           ……
                    FillRs.MoveNext
                    DoEvents
                Next
                .redraw=true
                .refresh
          end with
    这种方法,数据不多的很可以的。
      

  2.   

    跟踪一下你的程序吧, 看看哪一步该走的它没走, 看你的程序有点累, 因为:
    1. 你的子程序命名: gc1, gc2, gc3, gc4 是程序员的大忌, 因为这样的命名是很不容易读和维护的,VB6是支持中文名函数的, 你完全可以把:  Public Sub gc4()
    写成:
      Public Sub gc清除表格内容()这样自己容易维护, 别人也容易读你的程序.2. 一个循环的中止条件尽量不要外置:
      Do Until rs1.EOF
         gc3
      Loop
    上面这段程序会很脆弱, 一旦你的gc3过程忘记写rs1.MoveNext, 你就得到一个死循环, 而且自己可能还不知道为什么, 正确的做法是: 去掉gc3中的rs1.MoveNext, 上边的程序段改成:
      Do Until rs1.EOF
         gc3
         rs1.MoveNext
      Loop3. 没有必要的情况下, 尽量不要使用全局参数, 而改用参数传递, 以免在不知情的情况下被别处修改了内容, 例如, 如果可以的话, 这段程序:
      Do Until rs1.EOF
         gc3
         rs1.MoveNext
      LoopPublic Sub gc3()
    ....
    End Sub可以写成:
      Do Until rs1.EOF
         call gc3(rs1)
         rs1.MoveNext
      LoopPublic Sub gc3(rs1 as Recordset)
    ....
    End Sub4. Msflexgrid的操作不必象你操作的那么复杂, 比如:
         For i = 0 To row_num
            MSFlexGrid1.RowHeight(i) = high
         Next
       可以写成:
         MSFlexGrid1.RowHeight(-1) = high
    ---------------------------------------------
    MSFlexGrid1.Row = 0
    MSFlexGrid1.Col = 0
    MSFlexGrid1.Text = "职工编号"
    MSFlexGrid1.Col = 1
    MSFlexGrid1.Text = "职工姓名"
    MSFlexGrid1.Col = 2
    MSFlexGrid1.Text = "工作部门"可以写成:
    MSFlexGrid1.FormatString="^职工编号  |<职工姓名     |^工作部门       " 
    ----------------------------------------------------------------------------
    MSFlexGrid1.Row = gridrow
    MSFlexGrid1.Col = 0
    If Not IsNull(rs1!编号) Then
      MSFlexGrid1.Text = "  " & rs1!编号
    Else
      MSFlexGrid1.Text = ""
    End If
    MSFlexGrid1.Col = 1
    If Not IsNull(rs1!姓名) Then
      MSFlexGrid1.Text = "  " & rs1!姓名
    Else
      MSFlexGrid1.Text = ""
    End If
    MSFlexGrid1.Col = 2
    If Not IsNull(rs1!工作部门) Then
      MSFlexGrid1.Text = "  " & rs1!工作部门
    Else
      MSFlexGrid1.Text = ""
    End If可以写成:
    MSFlexGrid1.TextMatrix(gridrow,0)=rs1!编号 & Empty
    MSFlexGrid1.TextMatrix(gridrow,1)=rs1!姓名 & Empty
    MSFlexGrid1.TextMatrix(gridrow,2)=rs1!工作部门 & Empty5. ...... 给的分太少, 还是不说了