问题,关于后台数据库更新 经测试 在比率表中更改 "比率系数"数据,在<全隐框幕墙单价分析表>中(不管是后台数据表重新加载,还是已经加载的数据表)都能实现及时更新对应的"比率系数"数据,
但是在<全隐框幕墙单价分析表> 的DataColChanged中的代码不起作用,不会更新代码计算出的其它数据结果,目的,对于后台数据表不管是某个数据的更新,并且通过该数据的更新
进而引发DataColChanged中的代码,实现表中其它数据也在该数据的作用下实现计算更新,请老师分析一下问题出在哪儿,遇到这样的后台数据库更新的问题,怎么衔接代码,达到预期目的,谢谢老师!
下面是比率表和全隐框玻璃幕墙单价分析表的代码,比率表修改数据 全隐框玻璃幕墙单价分析表进行数据更新 经测试没问题,但是就是出现上面的问题,全隐框玻璃幕墙单价分析表DataColChanged中的代码不起作用 ,
'在比率表中DataColChanged中的代码,该代码用于自动更新 <全隐框幕墙单价分析表>中的数据 ( 已经测试没问题方向使用 针对的是固定筛选条件的行,采用移除和追加语句进行)
'Select Case e.DataCol.Name
' Case
"比率系数", "备注"
' Dim bms() As String =
{"全隐框玻璃幕墙单价分析表", "全明框玻璃幕墙单价分析表"}
' For Each bm As String In
bms
' '定义后台数据库跨表更新数据代码
' Dim cmd As New
SQLCommand
' cmd.Parameters.clear
' cmd.CommandText =
"UPDA TE {" & bm & "} SET 比率系数='"
& e.DataRow("比率系数") & "' , 备注='" & e.DataRow("备注")
& "' Where 项目构成 = '现场经费' And 辅助列1 = '间接费'"
' cmd.ExecuteNonQuery
'
DataTables(bm).RemoveFor("项目构成 = '现场经费'
And 辅助列1 = '间接费'")
'
DataTables(bm).AppendLoad("项目构成 = '现场经费'
And 辅助列1 = '间接费'")
'' Next
'End Select
以下是<全隐框幕墙单价分析表>的 DataColChanged中的代码 ,用于<全隐框幕墙单价分析表>中各种数据的整合计算,得出表中正确的结果(代码经测试没问题,能得到想要的结果)
Select Case e.DataCol.Name
Case "用量", "单价", "比率系数"
'一 定义合价,合价上涨百分比 填写方式代码
If e.DataRow.IsNull("比率系数") And
e.DataRow.IsNull("用量") And e.DataRow.IsNull("单价") Then
e.DataRow("合价") = Nothing
End If
'二 定义 材料费,人工费项目列中 比率系数 不能输入内容,以及合价的计算方式的计算方式代码
If e.DataRow("科目编码") =
"材料费" Or e.DataRow("科目编码") = "人工费" Then
e.DataRow("比率系数") =
Nothing'定义比率系数不能输入内容
If e.DataRow.IsNull("用量") Or
e.DataRow.IsNull("单价") Then
e.DataRow("合价") = Nothing
Else
e.DataRow("合价") =
e.DataRow("用量") * e.DataRow("单价")
End If
End If
'三以下是定义合价的计算方式代码的全部代码,其中又分几部分单元代码,见下面代码提示
'1 定义各种变量代码
Dim clf As Double '定义材料费变量
Dim rgf As Double '定义人工费变量
Dim jxf As Double '定义机械费变量
Dim jjf As Double '定义间接费变量
Dim lr As Double '定义利润变量
Dim sj As Double '定义税金变量
'2 定义材料费 人工费 机械费,间接费,利润,税金的逻辑求和代码
clf = DataTables("全隐框玻璃幕墙单价分析表").Compute("Sum(合价)", "科目编码 = '材料费'")
rgf = DataTables("全隐框玻璃幕墙单价分析表").Compute("Sum(合价)", "科目编码 = '人工费'")
jxf = DataTables("全隐框玻璃幕墙单价分析表").Compute("Sum(合价)", "科目编码 = '机械费'")
jjf = DataTables("全隐框玻璃幕墙单价分析表").Compute("Sum(合价)", "科目编码 = '间接费' AND 项目构成 <> '间接费'")
lr = DataTables("全隐框玻璃幕墙单价分析表").Compute("Sum(合价)", "科目编码 = '利润'")
sj = DataTables("全隐框玻璃幕墙单价分析表").Compute("Sum(合价)", "科目编码 = '税金'")
'3 定义 机械费 生成数据时 逻辑运算代码
If e.DataRow("科目编码") =
"机械费" Then
If e.DataRow.IsNull("比率系数") Then
'定义必须启动比率系数列的值来控制运量和单价的内容
e.DataRow("用量") = Nothing
'定义用量不能输入内容
e.DataRow("单价") = Nothing
'定义单价不能输入内容
Else
e.DataRow("用量") = 1'定义用量只能填写1
e.DataRow("单价") = Nothing'定义单价不能输入内容
e.DataRow("合价") =
clf * e.DataRow("比率系数") '定义 机械费 逻辑运算代吗
End If
End If
'4 定义
间接费 生成数据时
逻辑运算辑代码
If e.DataRow("科目编码") =
"间接费" And e.DataRow("项目构成") <> "间接费"Then
If e.DataRow.IsNull("比率系数") Then
e.DataRow("用量") = Nothing
e.DataRow("单价") = Nothing
Else
e.DataRow("用量") = 1'定义用量只能填写1
e.DataRow("单价") = Nothing
e.DataRow("合价") =
(clf + rgf + jxf) * e.DataRow("比率系数")'定义 间接费 逻辑运算代码
End If
End If
'5 定义
利润 生成数据时
逻辑运算辑代码
If e.DataRow("科目编码") =
"利润" Then
e.DataRow("用量") = Nothing'定义
用量 不能输入内容
e.DataRow("单价") = Nothing'定义
单价 不能输入内容
e.DataRow("合价") =
(clf + rgf + jxf + jjf) * e.DataRow("比率系数")'定义 利润 逻辑运算代码
End If
'6 定义 税金 生成数据时 逻辑运算辑代码
If e.DataRow("科目编码") =
"税金" Then
e.DataRow("用量") = Nothing'定义
用量 不能输入内容
' e.DataRow("单价") =
Nothing'定义 单价 不能输入内容
' e.DataRow("合价") =
(clf + rgf + jxf + jjf + lr) * e.DataRow("比率系数")'定义 税金 逻辑运算代码
e.DataRow("合价") =
(clf + rgf + jxf + jjf + lr) * e.NewValue'定义 税金 逻辑运算代码
End If
'7 定义 平米单价 生成数据时 逻辑运算辑代码
If e.DataRow("科目编码") =
"平米单价" Then
e.DataRow("用量") = Nothing'定义
用量 不能输入内容
e.DataRow("单价") = Nothing'定义
单价 不能输入内容
e.DataRow("合价") =
clf + rgf + jxf + jjf + lr + sj '定义 平米单价 逻辑运算代码
End If
End Select