会的请发个例子出来参考一下好吗?
Dim str as string
srt=GrdM.TextMatrix(.row, .col)
cntl为网格控件名,sql为查询语句,ipagenum为要取第几页的数据,irecperpage为每页显示记录数。
这是用来显示查询结果到网格的。
Public Sub FillBrowseFGrid(cntl As Control, sSQL As String, iPageNum As Integer, iRecPerPage As Integer)
Dim i As Integer
Dim j As Integer
Dim sFieldName As String
Dim pc As Integer
On Error GoTo Err_FillFGrid
Dim rs As New ADODB.Recordset
cnn.CursorLocation = adUseClient
Set rs = New ADODB.Recordset
rs.CacheSize = iRecPerPage * iPageNum
rs.MaxRecords = iRecPerPage * iPageNum
rs.CursorLocation = adUseClient
rs.Open sSQL, cnn, adOpenStatic, adLockReadOnly
rs.PageSize = iRecPerPage
rs.AbsolutePage = iPageNum
Set up the col size of the grid
With cntl
.Clear
.Rows = 2
.Cols = rs.Fields.Count
End With
Caption
For i = 0 To rs.Fields.Count - 1
cntl.TextMatrix(0, i) = rs.Fields(i).Name
Select Case rs(i).Type
Case adChar
cntl.ColWidth(i) = rs(i).DefinedSize * 120
If Len(rs.Fields(i).Name) > rs(i).DefinedSize Then cntl.ColWidth(i) = Len(rs.Fields(i).Name) * 120
Case adInteger
cntl.ColWidth(i) = rs(i).DefinedSize * 120
If Len(rs.Fields(i).Name) > rs(i).DefinedSize Then cntl.ColWidth(i) = Len(rs.Fields(i).Name) * 120
Case adDBTimeStamp
cntl.ColWidth(i) = rs(i).DefinedSize * 80
If Len(rs.Fields(i).Name) > rs(i).DefinedSize Then cntl.ColWidth(i) = Len(rs.Fields(i).Name) * 120
Case adVarChar
cntl.ColWidth(i) = 3000
Case adLongVarChar
cntl.ColWidth(i) = 3000
Case Else
If IsNumeric(rs.Fields(i)) Then
cntl.ColWidth(i) = Val(rs.Fields(i)) * 120
If Len(rs.Fields(i).Name) > rs(i).DefinedSize Then cntl.ColWidth(i) = Len(rs.Fields(i).Name) * 120
Else
cntl.ColWidth(i) = 1000
If Len(rs.Fields(i).Name) > rs(i).DefinedSize Then cntl.ColWidth(i) = Len(rs.Fields(i).Name) * 120
End If
End Select
Next
j = 1
For pc = 1 To iRecPerPage
cntl.Rows = j + 1
cntl.Row = j
For i = 0 To rs.Fields.Count - 1
With cntl
.Col = i
If Not IsNull(rs(i)) Then
If rs(i).Type = adChar Or rs(i).Type = adVarChar Or rs(i).Type = adLongVarChar Then .Text = " " & Trim(rs(i)) Else .Text = rs(i)
Else
.Text = ""
End If
End With
Next
j = j + 1
Get next row
rs.MoveNext
If rs.EOF Then Exit For
Next pc
rs.Close
Exit_FillFGrid:
Exit Sub
Err_FillFGrid:
MsgBox Err.Description, "Fill Browse Grid Error: "
Resume Exit_FillFGrid
End Sub
取的每一格的值的方法就是
cntl.TextMatrix(0, i) = rs.Fields(i).Name