会的请发个例子出来参考一下好吗?

解决方案 »

  1.   

    Dim str as string
    srt=GrdM.TextMatrix(.row, .col)
      

  2.   

    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 SubErr_FillFGrid:
       
        MsgBox Err.Description, "Fill Browse Grid Error: "
       
        Resume Exit_FillFGrid
    End Sub取的每一格的值的方法就是
    cntl.TextMatrix(0, i) = rs.Fields(i).Name
      

  3.   

    cntl.TextMatrix(0, i) = rs.Fields(i).Name数据我早已经显示出来了.我现在只要取得网格的内容.CNT1不要的话.是不是改成GRID控件名吖?还有(0,i),i还要定义吗?
      

  4.   

    楼主既然会显示就该会读啊,和写的方法一样写的时候不是mshflexgrid1.textmatrix(x,y)="````" 么 读就是
    str=mshflexgrid1.textmatrix(x,y), x是行数,Y是列数```