Public Function RecordSum(rsDataSet As Object) As Long
If Not TypeOf rsDataSet Is Recordset And Not TypeOf rsDataSet Is ADODB.Recordset Then Exit Function
If rsDataSet.RecordCount > 0 Then
rsDataSet.MoveLast
rsDataSet.MoveFirst
End If
RecordSum = rsDataSet.RecordCount
End Function
Public Sub DrawGrid(rsDataSet As Object, rsGrid As Object)
If Not TypeOf rsDataSet Is Recordset And Not TypeOf rsDataSet Is ADODB.Recordset Then Exit Sub
If Not TypeOf rsGrid Is MSFlexGrid Then Exit Sub
rsGrid.Cols = rsDataSet.Fields.Count
Dim fStr As String
fStr = ""
Dim I As Long
For I = 0 To rsDataSet.Fields.Count - 2
fStr = fStr & "<" & rsDataSet.Fields(I).name & "|"
Next
fStr = fStr & "<" & rsDataSet.Fields(I).name
rsGrid.FormatString = fStr
rsGrid.Rows = RecordSum(rsDataSet) + 1
If rsGrid.Rows > 1 Then
rsGrid.FixedRows = 1
End If
If RecordSum(rsDataSet) = 0 Then Exit Sub
' ///////////////////////////////////
rsDataSet.MoveFirst
Dim J As Long
For J = 0 To RecordSum(rsDataSet) - 1
For I = 0 To rsDataSet.Fields.Count - 1
If I = 1 Or I = 2 Or I = 3 Then
rsGrid.ColWidth(I) = 567 * 5
Else
rsGrid.ColWidth(I) = 567 * 2.4
End If
If rsDataSet.Fields(I).Type = adDate Or rsDataSet.Fields(I).Type = 8 Or rsDataSet.Fields(I).Type = adDBTimeStamp Then
If rsDataSet.Fields(I).Value >= 1 Then
rsGrid.TextMatrix(J + rsGrid.FixedRows, I) = IIf(IsNull(rsDataSet.Fields(I).Value), "", Format(rsDataSet.Fields(I).Value, "yyyy-mm-dd"))
Else
rsGrid.TextMatrix(J + rsGrid.FixedRows, I) = IIf(IsNull(rsDataSet.Fields(I).Value), "", Format(rsDataSet.Fields(I).Value, "Long Time"))
End If
ElseIf rsDataSet.Fields(I).Type = 5 Then '//货币
rsGrid.TextMatrix(J + rsGrid.FixedRows, I) = IIf(IsNull(rsDataSet.Fields(I).Value), "", "¥" & Abs(rsDataSet.Fields(I).Value))
Else
rsGrid.TextMatrix(J + rsGrid.FixedRows, I) = IIf(IsNull(rsDataSet.Fields(I).Value), "", rsDataSet.Fields(I).Value)
End If
Next I
rsDataSet.MoveNext
Next J
End Sub