想把数据库表的东东显示到msflexgrid中,代码如下:
Private Sub Command7_Click()
Dim objconn As ADODB.Connection
Dim objrst As ADODB.Recordset
Dim sql As String
Set objrst = New ADODB.Recordset
Set objconn = New ADODB.Connection
objconn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=ddd"
objconn.Open
sql = "select dianchang from machine "
With objrst
    .Source = sql
    .ActiveConnection = objconn
    .LockType = adLockPessimistic
    .CursorType = adOpenKeyset
    .CursorLocation = adUseClient
    .Open
End With
Set MSFlexGrid1.DataSource = objrst(出错地方,数据集objrst=nothing)
objrst.Close
End Sub
运行时,提示“对象变量或WITH 块未定义”,这是为什么,数据库没连上?帮帮忙谢谢!

解决方案 »

  1.   

    MSFLEXGRID控件是不能这样连的,你直接在获得数据集后,一条一条的读到MSFLEXGRID上吧
      

  2.   

    Public Function getDataTo() As Boolean       
    Dim i As Integer
        If checkRct = True Then   '不用看这个,这是我自己写的判断是否为空集合
            Exit Function
        End If
        rctdata.MoveFirst              '这个rctdata是ADODB.Recordset
            With ProJFrm
                While (rctdata.EOF = False)
                    .MSFlexGrid1.AddItem (Empty)
                    For i = 0 To rctdata.Fields.Count - 1
                        .MSFlexGrid1.Col = i
                        .MSFlexGrid1.Text = rctdata.Fields(i).Value
                    Next
                    rctdata.MoveNext
                    .MSFlexGrid1.Row = .MSFlexGrid1.Row + 1
                Wend
            End With
        getDataTo = True
    End Function
    这个函数里没有如何连接,也没有如何获得数据集,只是将数据集中的数据读到MSF控件上.
      

  3.   

    Set MSFlexGrid1.DataSource = objrst(出错地方,数据集objrst=nothing)
    是可以的,我就是这么写的
    换种游标试试,换成静态的
      

  4.   

    我用的是VSFlexGrid控件,不过都是一样的
    Public Sub setFG(strsql As String, myVSFG As VSFlexGrid, sCon As String)        '将SQl结果显示在GRID上
        Dim rs As New ADODB.Recordset
        Dim con As New ADODB.Connection    con.ConnectionString = sCon
        con.Open
        rs.Open strsql, con, adOpenStatic
        Set myVSFG.DataSource = rs
        Set rs = Nothing
        con.close
    End Sub
      

  5.   

    记错了,MSHFlexGrid这个控件才可以,装完VB的SP6有这个控件.