Private Sub Command1_Click()
ActiveReport1.Show
End Sub
Private Sub Form_Load()
Dim i, j
With MSHFlexGrid1
.Rows = 11
.Cols = 6
For i = 1 To 10
For j = 1 To 5
.TextMatrix(i, j) = i + j
Next j
.TextMatrix(i, 0) = i
Next i
.TextMatrix(0, 1) = "a"
.TextMatrix(0, 2) = "b"
.TextMatrix(0, 3) = "c"
.TextMatrix(0, 4) = "d"
.TextMatrix(0, 5) = "e"
End With
End Sub
ActiveReport上的代码:
Private Sub ActiveReport_DataInitialize()
Me.Fields.Add "a"
Me.Fields.Add "b"
Me.Fields.Add "c"
Me.Fields.Add "d"
Me.Fields.Add "e"
End Sub
Private Sub ActiveReport_FetchData(eof As Boolean) '这儿就是你问题的解决方法
Static i, j As Integer
If frmMain.MSHFlexGrid1.TextMatrix(1, 1) <> "" Then
i = i + 1
If i > 20 Then
eof = True
Exit Sub
Else
eof = False
End If
j = i
If j <= frmMain.MSHFlexGrid1.Rows - 1 Then
Fields("a").Value = frmMain.MSHFlexGrid1.TextMatrix(i, 1)
Fields("b").Value = frmMain.MSHFlexGrid1.TextMatrix(i, 2)
Fields("c").Value = frmMain.MSHFlexGrid1.TextMatrix(i, 3)
Fields("d").Value = frmMain.MSHFlexGrid1.TextMatrix(i, 4)
Fields("e").Value = frmMain.MSHFlexGrid1.TextMatrix(i, 5)
Else
Field1.Visible = False
Field2.Visible = False
Field3.Visible = False
Field4.Visible = False
Field5.Visible = False
End If
End If
End Sub