以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  【新手教程】狐步系列二--跨表验证输入项目是否正确,并引用输入项的相关属性  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=23311)

--  作者:lichenwudi
--  发布时间:2012/9/8 16:38:00
--  【新手教程】狐步系列二--跨表验证输入项目是否正确,并引用输入项的相关属性
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编辑过]

--  作者:lichenwudi
--  发布时间:2012/9/8 16:40:00
--  
如果觉得有帮助就把它顶起来吧!你的回帖我的动力!
--  作者:everybody
--  发布时间:2015/7/19 22:24:00
--  
我来顶顶!!!!
--  作者:zqxzhs
--  发布时间:2015/7/19 22:27:00
--  

没有看明白什么意思