Dim CreateTBProjectAndPosition As String
    CreateTBProjectAndPosition = "create table #ProjectAndPosition(wprojectid nvarchar(50),positionName nvarchar(50),num int)"
    
'填充临时表  时间部门 为查询条件 当前部门 当前周次
Dim InsertTBa As String
InsertTBa = "insert into #ProjectAndPosition select * from (select a.*,count(positionName) as num from(select isnull(Ftext,'未在项目') as wprojectid,positionName  from (select a.*,b.Ftext from (select a.*,b.positionName,b.positionCode from(select * from wproject where departmentNamelike like '%" + DepFlg + "%' and( (InprojectDate<'" + Week + "' and EndprojectDate>'" + Week + "') or (BeInprojectDate<'" + Week + "' and EndprojectDate>'" + Week + "')) )a inner join  v_Report_EmployeeDetailInfo b on a.workerID=b.code) a left join    t_bos200000008 b on a.wprojectid=b.fbillno ) a ) a  group by a.wprojectid,a.positionName) a"
            
 
    
    '查询
    Dim selectListW As String
    
    selectListW = "declare @sql varchar(8000) set @sql='select isnull(wprojectid,''总计'') as '+'项目名' select @sql=@sql+',max(case positionName when '''+ positionName+''' then num else 0 end)[' + positionname + ']' from (select distinct positionName from (select * from ProjectAndPosition) a ) as a set @sql=@sql+' ,sum(num) 总计 from (select * from ProjectAndPosition) a group by a.wprojectid with rollup' exec(@sql)"
        
Set rs = InsertSql_Tb(CreateTBProjectAndPosition, InsertTBa, selectListW)
Public Function InsertSql_Tb(sql1 As String, sql2 As String, sql3 As String) As ADODB.Recordset        
           
      
        Dim conn As ADODB.Connection
            
         
        Dim rs As ADODB.Recordset
        Set rs = New ADODB.Recordset
        
        Set conn = New ADODB.Connection
          
        '查询语句
            
        conn.ConnectionString = connectString   '这是连接SQL数据库的语句
         
        conn.Open
      
        conn.Execute sql1
        conn.Execute sql2
        
        rs.CursorLocation = adUseClient
        rs.Open sql3, conn, adOpenDynamic, adLockBatchOptimistic
        
        Set InsertSql_Tb = rs
                
End Function
上面3个是下面方法的参数,用SqlServer profiler能抓取到这些sql的执行,但是在判断recordset的时候 说已经关闭了 什么原因 。
另外很久没碰VB了 求大神给你详细的VB连接数据库方法的实例,带判断rs是否存在 是否为空 conn 关闭 rs关闭的实例。