已经打开了一个ado连接,可以对他进行查询,查询结果要显示在datagrid控件里面
如果这个查询结果在设计时就能确定的话,可以修改datagrid空间的datasource就可以了
但是我现在要在运行过程中允许用户构造一个sql语句,这个的查询结果怎么显示在datagrid中呢?

解决方案 »

  1.   

    objCmd.CommandType = adCmdText            'objCmd是ADO的command对象
    objCmd.CommandText = "select ...from...where...."
    Set objRst = objCmd1.Execute
    Set DataGrid.DataSource = objRst    'DataGrid是你的DataGrid控件的名字,objRst是ADO的recordset对象
      

  2.   

    dim rs as new adodb.recordset
    rs.open "select * from table"
    set datagrid.datasource=rs
    rs.close
      

  3.   

    dim rs as new adodb.recordset
    rs.open "select * from table",conn
    set datagrid.datasource=rs
    rs.close
      

  4.   

    Option ExplicitPrivate Rs As New ADODB.Recordset
    Private Conn As New ADODB.ConnectionPrivate Sub Form_Load()
     Dim strConn As String
     
     ' 连接数据库的字符串
     ' 连接带密码的数据库,直接在连接符后面加上Jet OLEDB:DataBase Password='您的密码'
     ' 连接Access97数据库需要使用Jet.OLEDB.3.5,Access2K和以上数据库使用Jet.OLEDB.4.0
     strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\test.mdb;Persist Security Info=False"
     
     ' 使用客户端数据游标
     Conn.CursorLocation = adUseClient
     ' 打开Access的连接
     Conn.Open strConn
     
     ' 如果RecordSet的状态不是关闭状态,则关闭Recordset
     If Rs.State <> adStateClosed Then Rs.Close
     
     ' Recordser打开表People
     Rs.Open "Select * from People", Conn, adOpenKeyset, adLockOptimistic
     
     ' 报告出 一共多少笔数据,测试是否存在数据
     ' MsgBox Rs.RecordCount
     
     ' 绑定进DataGrid
     Set DataGrid1.DataSource = Rs
     
    End Sub
      

  5.   

    哦,知道了,原来要用set啊,我都忘了。
    顺便问一下,如果recordset中某一行数据的某一列为空,在vb中引用他就会出错,我用not isnull怎么不能判断出来那个为空呢?大家帮我看看这个问题,一会儿就结贴
      

  6.   

    rs.open"Select Name from tablename",con,3,3
    text1.text=Trim(rs(0)& "")
    加个空格就行了