专家老师好,我使用的是后台数据库方法 sqlfind 怎么总是说内部表不存在,是啥问题,老师您给看看下面的代码和问题描述,看问题出在哪儿 另外问题二, 刷新数据按钮的代码编译也没问题,就是没动作,是啥问题,谢谢老师
工程造价汇总表窗口是正在操作的主表
表结构如下:
工程造价汇总表
|
序号
|
项目内容辅助列
|
项目内容
|
单位
|
工程量
|
理论单价
|
理论合价
|
投标单价
|
投标合价
|
备注
|
1
|
全隐框玻璃幕墙单价分析表
|
全隐框玻璃幕墙
|
元
|
100
|
653.43
|
65343
|
653.43
|
87920
|
|
2
|
全隐框玻璃幕墙单价分析表
|
全明框玻璃幕墙
|
元
|
200
|
243.5453
|
48709.06
|
1548.6362
|
309727.2
|
|
|
该列是为了和后台数据表名称一一对应而设置的辅助列
|
|
|
|
该列数据需要从后台调用及更新
|
|
该列数据需要从后台调用及更新
|
|
|
后台数据表: "全隐框玻璃幕墙单价分析表" "全明框玻璃幕墙单价分析表" 这些后台数据表的结构都相同,结构如下:
全隐框玻璃幕墙单价分析表 (全明框玻璃幕墙单价分析表)
|
|
工程名称
|
|
计量单位:1平方米
|
序号
|
项目构成
|
单位
|
理论用量
|
理论单价
|
合价 (理论综合单价)
|
投标用量
|
投标单价
|
报价调整3 (投标综合单价)
|
备注
|
一
|
直接费
|
总计
|
|
|
|
|
|
|
Ⅰ+Ⅱ+Ⅲ
|
Ⅰ
|
材料费
|
合计
|
|
|
|
|
|
|
|
1
|
玻璃
|
平米
|
1.2
|
135
|
162
|
2.52
|
135
|
340.2
|
6mm+12A+6mm中空钢化LOW-e玻璃
|
2
|
铝型材
|
公斤
|
6
|
24
|
144
|
6
|
24
|
144
|
氟碳喷涂
|
3
|
埋板
|
套
|
0.5
|
28
|
14
|
0.5
|
28
|
14
|
300*200*8表面热镀锌处理
|
Ⅱ
|
人工费
|
合计
|
|
|
|
|
|
|
|
1
|
制作费
|
平米
|
1
|
75
|
75
|
1
|
75
|
75
|
|
2
|
安装费
|
平米
|
1
|
65
|
65
|
1
|
65
|
65
|
|
Ⅲ
|
机械费
|
合计
|
|
|
|
|
|
|
|
1
|
大型机械设备
|
平米
|
1
|
|
5.98
|
1
|
|
8.77
|
I *1.5%
|
2
|
小型机具设备
|
平米
|
1
|
|
3.98
|
1
|
|
5.85
|
I *1%
|
二
|
间接费
|
合计
|
|
|
|
|
|
|
|
1
|
现场经费
|
平米
|
1
|
|
5.53
|
1
|
|
7.45
|
(一 )*1%
|
2
|
设备折旧费
|
平米
|
1
|
|
6.64
|
1
|
|
8.93
|
(一 )*1.2%
|
三
|
利润
|
合计
|
|
|
33.93
|
|
|
45.66
|
(一 +二)*6%
|
四
|
税金
|
合计
|
|
|
53.95
|
|
|
72.59
|
(一 +二+三)*9%
|
五
|
平米单价
|
元
|
|
|
653.43
|
|
|
879.2
|
(一+二+三+四)
|
|
|
|
|
|
653 是需要调用的数据
|
|
|
653 是需要调用的数据
|
|
要实现的目的: 1 就是在窗口的目录树中,点击节点标签:能够自动从后台相应数据表(全隐框玻璃幕墙单价分析表,全明框玻璃幕墙单价分析表)中提取出对应的综合单价数据(例如653 653),填充到工程造价汇总表对应的单元格中
2当后台不同的数据表的数据发生变化后,在窗口中点击 数据刷新 按钮后,能够根据后台数据表中的数据自动更正工程造价汇总表中对应的数据
“”
问题一: 从后台数据表中调用数据,一开始都没问题,但不知突然就开始弹出找不到数据表的报错窗口,数据就不能调用了,请老师看看下面的代码,看看问题究竟出在哪里,
(老师我在写刷新数据代码时用了一下防止闪屏的代码,后来删除了这个代码,不知和这个锁屏闪屏代码有没有关系)
Select Case e.Node.Text
'一 调用玻璃幕墙单价分析表代码
Case "全隐框玻璃幕墙单价分析表“
Dim dr1 As DataRow = DataTables("全隐框玻璃幕墙单价分析表").SQLFin d("项目构成 = '平米单价'")
If dr1 IsNot Nothing Then
Dim r1 As Integer
r1 = Tables("工程造价汇总表").FindRow("[项目内容]='全隐框玻璃幕墙'")
If r1 >= 0 Then '如果找到的话
Tables("工程造价汇总表").Position = r1
If Tables("工程造价汇总表").Rows( r1)("工程量") > 0 Then
Tables("工程造价汇总表").Rows( r1)("单位") = dr1("单位")
Tables("工程造价汇总表").Rows( r1)("理论综合单价") = dr1("合价")
Tables("工程造价汇总表").Rows( r1)("投标综合单价") = dr1("报价调整3")
Else
MessageBox.Show("请先填写工程量,否则无法进行数据加载,填写工程量后,请重新加载数据,第一次双击鼠标是定位,再此双击鼠标是加载数据,切记")
End If
End If
End If
Case "全明框玻璃幕墙单价分析表“
Dim dr2 As DataRow = DataTables("全明框玻璃幕墙单价分析表").SQLFin d("项目构成 = '平米单价'")
If dr2 IsNot Nothing Then
Dim r2 As Integer
r2 = Tables("工程造价汇总表").FindRow("[项目内容]='全明框玻璃幕墙'")
If r2 >= 0 Then '如果找到的话
Tables("工程造价汇总表").Position = r2
If Tables("工程造价汇总表").Rows( r2)("工程量") > 0 Then
Tables("工程造价汇总表").Rows( r2)("单位") = dr2("单位")
Tables("工程造价汇总表").Rows( r2)("理论综合单价") = dr2("合价")
Tables("工程造价汇总表").Rows( r2)("投标综合单价") = dr2("报价调整3")
Else
MessageBox.Show("请先填写工程量,否则无法进行数据加载,填写工程量后,请重新加载数据, 第一次双击鼠标是定位,再此双击鼠标是加载数据,切记")
End If
End If
End If
End select
End If
老师好 :上面代码是在窗口中设置了一个目录树,写在双击节点事件中的代码,
都是通过对后台数据表: "全隐框玻璃幕墙单价分析表“,"全明框玻璃幕墙单价分析表“ 进行调用数据,这些表在项目事件内部表加载事件中设置启动时不加载,一开始时点击目录树节点能正常调用数据,是没问题的,都能正常执行,后来就不知道咋地回事,一调用数据就提示,找不到数据表,也不知是怎么回事,请老师给看看问题出在哪儿,
谢谢老师
问题二: 在窗口的
刷新数据 按钮中写入如下代码,编译也没问题,点击后 和问题一相同 还说找不到数据表,,我又把数据表加载进来,不报错了,但是数据不能刷新,请老师检查一下代码,看问题出在哪里 谢谢老师,
'按钮自动更新数据代码
'''刷新已经加载的数据代码
Dim bms() As String = {"全隐框玻璃幕墙单价分析表", "全明框玻璃幕墙单价分析表"}'最后整体拷贝修改
For Each bm As String In bms
Dim dr As DataRow
If DataTables.Contains(bm) Then
'定义已加载的数据库跨表更新数据代码
dr = DataTables(bm).Find( "[项目构成] ='平米单价'")
Else
'定义后台数据库跨表更新数据代码
dr = DataTables(bm).SQLFin d("[项目构成] ='平米单价'")
End If
'定义后台数据库跨表更新数据代码
Dim cmd As New SQLCommand
cmd.CommandText = "UP DATE {工程造价汇总表} SET 理论综合单价= ? , 投标综合单价= ? WHERE 项目内容辅助列 = ? "
cmd.Parameters.clear
cmd.Parameters.Add("@理论综合单价", dr("合价"))
cmd.Parameters.Add("@投标综合单价", dr("报价调整3"))
cmd.Parameters.Add("@项目内容辅助列", DataTables(bm).name)
cmd.ExecuteNonQuery
Next