Sub SetTreeView()
   Dim intRelative1, intRelative2, intRelative3 As Integer
   
   Set dbsContent = OpenDatabase(strDbPath)
   Set datXiaoqu1 = dbsContent.OpenRecordset("select * from 小区表 where 小区代号<>1")
 
   tvwZhuhu.Nodes.Clear
   Do While Not datXiaoqu1.EOF
      Set mNode = tvwZhuhu.Nodes.Add(, tvwLast, datXiaoqu1("小区代号") & "_", datXiaoqu1("小区名称"), "house", "house")
      intRelative1 = mNode.Index
      Area_id = Val(mNode.Key)
      Set datLouyu = dbsContent.OpenRecordset("select * from 楼宇表 where 小区代号=" & Area_id)
      Do While Not datLouyu.EOF
         Set mNode = tvwZhuhu.Nodes.Add(intRelative1, tvwChild, datLouyu("楼宇代号") & "$", datLouyu("楼宇名称"), "louyu", "louyu")
         intRelative2 = mNode.Index
         louyu_id = Val(mNode.Key)
         Set datDanyuan = dbsContent.OpenRecordset("select DISTINCT 房屋表.单元id,单元表.单元名称 from 房屋表,单元表,单元表 inner join 房屋表 on 房屋表.单元id=单元表.单元id  where 房屋表.楼宇代号=" & louyu_id & " and 房屋表.目前状态id<>1")
         Do While Not datDanyuan.EOF
              Set mNode = tvwZhuhu.Nodes.Add(intRelative2, tvwChild, datDanyuan("单元id") & "<" & louyu_id & ">", datDanyuan("单元名称"), "danyuan", "danyuan")
              intRelative3 = mNode.Index
              Owner_Id = Val(mNode.Key)
              ''Set datZhuhuB = dbsContent.OpenRecordset("select * from 住户表,房屋表,房屋表 inner join 住户表 on 房屋表.房间代号=住户表.房间代号  where 楼宇代号=" & louyu_id & " and 单元id=" & Owner_Id)
              Dim sb As String
              Dim sql1 As String
              sb = Format(Curreydate, "yyyy年mm月")
              sql1 = "select * from 住户表,房屋表,收费表 where 房屋表.房间代号=住户表.房间代号 and 住户表.房间代号=收费表.房间代号 and 房屋表.楼宇代号="
              sql1 = sql1 & louyu_id & " and 房屋表.单元id=" & Owner_Id & "and 收费表.收费否= 0 and 收费表.收费月份 =" & sb
                ''这里出错;''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
              Set datZhuhuB = dbsContent.OpenRecordset(sql1)
                  Do While Not datZhuhuB.EOF
                      Set mNode = tvwZhuhu.Nodes.Add(intRelative3, tvwChild, datZhuhuB("住户表.房间代号") & "#", datZhuhuB("房屋地址") & "【" & datZhuhuB("户主姓名") & "】", "man", "man")
                      datZhuhuB.MoveNext
                  Loop
                  datDanyuan.MoveNext
          Loop
         datLouyu.MoveNext
      Loop
      datXiaoqu1.MoveNext
   Loop
   dbsContent.Close
 End Sub

解决方案 »

  1.   

    我砍
    你把where后的所有条件都去掉,先加第一个条件,运行,如果ok那么再加第二个条件...你就会发现是哪里错误了或者新建一个工程专门做为测试sql语句用的
      

  2.   

    晕……你把最后得到的SQL语句放到数据库运行就知道错那里了!!
      

  3.   

    sql1 = sql1 & louyu_id & " and 房屋表.单元id=" & Owner_Id & " and 收费表.收费否= 0 and 收费表.收费月份 =" & sb
      

  4.   

    你的这种访问数据库方法效率极低,你看,先查出了数据集,然后再根据数据集进行循环访问数据库,大量的数据在网络上跑来跑去的,而且读起程序来太晕了。建议你把数据功能写成存储过程保存在数据服务器上面,然后用VB去访问存储过程。这样仅仅会返回一个最终的数据结果,而且SQL语句在SQL server上面调试起来十分方便高效
      

  5.   

    回复人: hj0849cn(阿铁) ( ) 信誉:100  2003-04-23 21:27:00  得分:0 
     
     
      晕……你把最后得到的SQL语句放到数据库运行就知道错那里了!!
      
     
    --------------------------------
    完全同意,放到debug窗口,拷贝出来看看
      

  6.   

    sql1 = sql1 & louyu_id & " and 房屋表.单元id=" & Owner_Id & "and -<< one more Space ,
      

  7.   

    你做一个这几个关系表的视图!这样很多关系的Where条件可以省略了
       再从这个视图的Select语句中加其他Where条件。速度快,不会错的。
       有一点,视图中的字段建议加上别名,用别名来查快。