本帖最后由 linzaixuan001 于 2009-12-09 20:18:39 编辑

解决方案 »

  1.   

    小弟的意思是,有没有存在类似这样子的写法:rs2.Open "select" & rs1.Fields("员工") & "from" & rs1, conn, adOpenKeyset, adLockOptimistic汗一个
      

  2.   

    这个没有你提得问题在原有的基础上添加一个inner join联到地址表就成了
      

  3.   

    根据您的提示,我查了下资料,select * from A inner join B on A.aID = B.bID现在我有现成的表B,但表A我该如何得到呢?是要将rs1记录集先 生成 表A吗?
      

  4.   


    select ... from 
    (
    (SELECT hou.名 AS 员工, hou.点-IIf(IsNull(qian.点),0,qian.点) AS 工资 FROM hou LEFT JOIN qian ON hou.名 = qian.名 where (hou.点-IIf(IsNull(qian.点),0,qian.点) as 表A 
    left join 
    (select ... ) as  表B 

    as 表 C
      

  5.   


    谢谢,小弟先说下我的做法,您看下是不是和您的思路一样题目中原先的那串SQL语句太长,为使您看得直观,我先假设为XXX,我是这样写的:
    rs2 open "select * from (XXX) inner join 员工资料表 on (XXX).员工 = 员工资料表.员工",conn, adOpenKeyset, adLockOptimistic这样写行不行哈
      

  6.   

    直接加在原来的sql上就可以了strsql = ""
    strsql = strsql & "SELECT hou.名 AS 员工 " & vbCrLf
    strsql = strsql & "     , hou.点-IIf(IsNull(qian.点),0,qian.点) AS 工资 " & vbCrLf
    strsql = strsql & "     , ygzl.住址 " & vbCrLf
    strsql = strsql & "  FROM hou  " & vbCrLf
    strsql = strsql & "       LEFT JOIN  " & vbCrLf
    strsql = strsql & "       qian ON hou.名 = qian.名  " & vbCrLf
    strsql = strsql & "       LEFT JOIN  " & vbCrLf
    strsql = strsql & "       员工资料表 as ygzl ON hou.名 = ygzl.员工  " & vbCrLf
    strsql = strsql & " where (hou.点-IIf(IsNull(qian.点),0,qian.点)) > 0"