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
我砍。。。
你把where后的所有条件都去掉,先加第一个条件,运行,如果ok那么再加第二个条件...你就会发现是哪里错误了。。。
或者新建一个工程专门做为测试sql语句用的。。。
晕……你把最后得到的SQL语句放到数据库运行就知道错那里了!!
sql1 = sql1 & louyu_id & " and 房屋表.单元id=" & Owner_Id & " and 收费表.收费否= 0 and 收费表.收费月份 =" & sb
你的这种访问数据库方法效率极低,你看,先查出了数据集,然后再根据数据集进行循环访问数据库,大量的数据在网络上跑来跑去的,而且读起程序来太晕了。建议你把数据功能写成存储过程保存在数据服务器上面,然后用VB去访问存储过程。这样仅仅会返回一个最终的数据结果,而且SQL语句在SQL server上面调试起来十分方便高效
数据表中的相关几个字段是字符型的吗?如果是字符型的条件值要价上引号
回复人: hj0849cn(阿铁) ( ) 信誉:100 2003-04-23 21:27:00 得分:0
晕……你把最后得到的SQL语句放到数据库运行就知道错那里了!!
--------------------------------
完全同意,放到debug窗口,拷贝出来看看
sql1 = sql1 & louyu_id & " and 房屋表.单元id=" & Owner_Id & "and -<< one more Space ,
你做一个这几个关系表的视图!这样很多关系的Where条件可以省略了
再从这个视图的Select语句中加其他Where条件。速度快,不会错的。
有一点,视图中的字段建议加上别名,用别名来查快。