我写的一段代码但是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
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
.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
这种方法,数据不多的很可以的。
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. ...... 给的分太少, 还是不说了