Dim dr As DataRow = e.DataRow ‘定义变量dr
Select Case e.DataCol.Name ’列名作为变化的相关判断
Case "胚重","毛重","条数","纸管及胶袋" ‘如果数据列变动的列名为 "胚重"或"毛重"或"条数"或"纸管及胶袋"
dr("损耗率") =1- (dr("毛重") - dr("纸管及胶袋")*dr("条数"))/dr("胚重") ’执行计算公式
End Select
If e.DataCol.Name = "品种" Then '如果内容发生变动的是品种列
If e.NewValue Is Nothing Then '如果新值是空白,也就是品种列的内容为空
e.DataRow("损耗限值") = Nothing '那么清空此行 损耗限值 列的内容
Else
Dim dr3 As DataRow ‘定义变量dr3
Dim dr2 As DataRow ’定于变量dr2
dr3 = DataTables("基础数据表").Find("[品种] = '" & e.NewValue & "'") ‘以新输入的 项
'" & e.NewValue & "' 在基础数据表的品种列中查找
If dr3 Is Nothing Then '如果在基础数据表的品种列中没找到了同名的产品行,也就是dr是Nothing ,就弹出报错信息
MessageBox.Show ("请仔细检查是否存在以下2种情况,并做对应处理:"& Chr(13) & Chr(10) &"1.输入错误."& Chr(13) & Chr(10) &"2.该品种是新品种."& Chr(13) & Chr(10) &"如果是新品种,请增加至基础列表.谢谢!","提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
’否则 将对应的 损耗限值 赋值给 当前表的 损耗限值的对应行
e.DataRow("损耗限值") = dr3("损耗限值")
End If
'以下代码与上一段获取损耗限值的原理差不多,唯一不同的是,由于第一次已经做了产品不存在的报错提示了,为了客户体验这里就不再重复判断了
dr2 = DataTables("基础数据表").Find("[品种] = '" & e.NewValue & "'")
If dr2 IsNot Nothing Then '如果找到了同名的产品行,也就是dr不是
Nothing
e.DataRow("品类") = dr2("品类")
End If
End If
End If
[此贴子已经被作者于2012-9-8 16:39:11编辑过]