Dim selstr1 As String = "select * from content where subject like  '22%'"
Dim selstr2 As String = "select count(body),count(subject) from content where subject like  '22%'"
        conn = New OleDbConnection("provider=microsoft.jet.oledb.4.0; data source=" & Server.MapPath("discuss.mdb"))        Try
            comm1 = New OleDbCommand(selstr1, conn)
            comm2 = New OleDbCommand(selstr2, conn)
            conn.Open()
            dr1 = comm1.ExecuteReader()
            dr2 = comm2.ExecuteReader
            dg1.DataSource = dr1
            dg1.DataBind()
            dg2.DataSource = dr2
            dg2.DataBind()
            'rpt1.DataSource = dr
            'rpt1.DataBind()
            conn.Close()
这时候他会报错:已有datareader打开~~请问有什么方法可以解决这一冲突么~~?多谢~

解决方案 »

  1.   

    dr1 = comm1.ExecuteReader()
                dg1.DataSource = dr1
                dg1.DataBind()dr1.close()dr2 = comm2.ExecuteReader
                dg2.DataSource = dr2
                dg2.DataBind()
                'rpt1.DataSource = dr
                'rpt1.DataBind()
      

  2.   

    主要是 conn 已经打开了.
    在 dr2 = comm2.ExecuteReader() 之前,先关闭 conn.
      

  3.   

    当然,当 ExecuteReader 的 CommandBehavior 参数设置为 CommandBehavior.CloseConnection时, dr1.Close() 同时也会调用 conn.Close();
      

  4.   

    可以将多个查询放到一个datagrid里面。
      

  5.   

    同意沙发的观点~~~
    dr1 = comm1.ExecuteReader()
                dg1.DataSource = dr1
                dg1.DataBind()dr1.close()dr2 = comm2.ExecuteReader
                dg2.DataSource = dr2
                dg2.DataBind()
                'rpt1.DataSource = dr
                'rpt1.DataBind()
      

  6.   

    怎么又看到这个贴了?如果这样你不如用dataset来填充两个表