以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 请专家指导一下 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=103321) |
-- 作者:audience68 -- 发布时间:2017/7/5 19:50:00 -- 请专家指导一下 If e.DataCol.Name = "品名" Then \'如果内容发生变动的是品名列 If e.NewValue Is Nothing Then \'如果新值是空白,也就是品名列的内容为空 e.DataRow("单价") = Nothing \'那么清空此行单价列的内容 Else Dim dr As DataRow \'否则在产品表查找同名的产品行,将找到的行赋值给变量dr dr = DataTables("产品").Find("[品名] = \'" & e.NewValue & "\'") If dr IsNot Nothing Then \'如果找到了同名的产品行,也就是dr不是Nothing e.DataRow("单价") = dr("单价") End If End If End If 对于上面的跨表引用代码,我想在增加一个判断条件,就是如果发现产品表中单价为空,则产品明细表中就清空新增加行(不允许新增加行) 我修改的如下,不知是否正确,请专家指导 If e.DataCol.Name = "品名" Then \'如果内容发生变动的是品名列 If e.NewValue Is Nothing Then \'如果新值是空白,也就是品名列的内容为空 e.DataRow("单价") = Nothing \'那么清空此行单价列的内容 Else Dim dr As DataRow \'否则在产品表查找同名的产品行,将找到的行赋值给变量dr dr = DataTables("产品").Find("[品名] = \'" & e.NewValue & "\'") If dr IsNot Nothing Then \'如果找到了同名的产品行,也就是dr不是Nothing e.DataRow("单价") = dr("单价") End If if e.DataRow("单价") is nothing then e.DataRow("单价") = Nothing end if End If End If |
-- 作者:有点甜 -- 发布时间:2017/7/5 20:20:00 -- If e.DataCol.Name = "品名" Then \'如果内容发生变动的是品名列 If e.NewValue Is Nothing Then \'如果新值是空白,也就是品名列的内容为空 e.DataRow("单价") = Nothing \'那么清空此行单价列的内容 Else Dim dr As DataRow \'否则在产品表查找同名的产品行,将找到的行赋值给变量dr dr = DataTables("产品").Find("[品名] = \'" & e.NewValue & "\'") If dr IsNot Nothing Then \'如果找到了同名的产品行,也就是dr不是Nothing If dr.IsNull("单价") Then msgbox("单价没填写") e.DataRow.Delete Else e.DataRow("单价") = dr("单价") End If Else msgbox("没有找到产品") e.DataRow("单价") = Nothing End If End If End If |
-- 作者:audience68 -- 发布时间:2017/7/5 20:41:00 -- msgbox("没有找到产品") e.DataRow("单价") = Nothing 能改成下面形式吗? msgbox("没有找到产品") e.DataRow.Delete 也就是没在产品表中找到相同品名行,就删除产品明细表中的新增行
|
-- 作者:有点甜 -- 发布时间:2017/7/5 20:49:00 -- 可以的 |
-- 作者:audience68 -- 发布时间:2017/7/5 20:54:00 -- 感谢有点甜专家的热心指导! |