以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- 目录树疑问 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=64635)
|
-- 作者:youngling
-- 发布时间:2015/2/26 10:36:00
-- 目录树疑问
请问使用目录树输入的列数据如何 判断数据是否在另一个表中?
目录树双击代码如下
If e.Node.Level = 1 Then \'如果单击的是第二层节点 Dim tr As Row = Tables("订单主表.订单明细表").Current Dim dr As DataRow = e.Node.DataRow \'获取生成此节点的DataRow tr("客户产品号") = dr("客户产品号") tr("材料编号") = dr("材料编号") tr("内控产品号") = dr("内控产品号") tr("产品描述") = dr("产品描述") e.Form.DropDownBox.Value = tr("客户产品号") \'这行不是多余的,省略此行,无法在表中正常使用此下拉窗口输入数据. e.Form.DropDownBox.CloseDropdown() End If
此主题相关图片如下:目录树.jpg
[此贴子已经被作者于2015/2/26 10:39:06编辑过]
|
-- 作者:Bin
-- 发布时间:2015/2/26 10:37:00
--
在DataColChangINg 中利用FIND查找判断一下即可
|
-- 作者:youngling
-- 发布时间:2015/2/26 10:44:00
--
以下是引用Bin在2015/2/26 10:37:00的发言:在DataColChangINg 中利用FIND查找判断一下即可
我是在DataColChanged 中判断的,但是不行
\'如果变更已经输好的数据,那么相应的其他相关数据需要清空 If e.DataCol.Name = "客户产品号" Then \'如果内容发生变动的是品名列 Dim dr As DataRow dr = DataTables("出库明细").Find("[客户产品号] = \'"& e.oldValue & "\'and [客户订单号] = \'"& e.DataRow("客户订单号") & "\'and [订单行号] = \'"& e.DataRow("订单行号") & "\' ") If dr IsNot Nothing Then \'如果找到的话 msgbox("该订单已经出货了,不允许修改") e.DataRow("客户产品号") = e.OldValue DataTables("订单明细表").save() Else e.DataRow("订货数量") = Nothing e.DataRow("含税单价") = Nothing e.DataRow("未税单价") = Nothing e.DataRow("交货日期") = Nothing e.DataRow("产品描述") = Nothing
\'Dim filter As String = "客户 = \'" & e.DataRow("客户") & "\' and 客户订单号 = \'" & e.DataRow("客户订单号") & "\' and 客户产品号 = \'" & e.DataRow("客户产品号") & "\' and 订单行号 = \'" & e.DataRow("订单行号") & "\'" End If End If
应该是如果在出库明细表中有该客户产品号数据存在,就不允许修改,否则订货数量,含税单价,未税单价等清零,实际运行下来是 在出库明细表中有该客户产品号数据存在 订货数量,含税单价,未税单价被清零了。没有起到效果呢
[此贴子已经被作者于2015/2/26 10:46:47编辑过]
|
-- 作者:Bin
-- 发布时间:2015/2/26 10:45:00
--
e.oldValue 改为 e.datarow("列名")
|
-- 作者:有点甜
-- 发布时间:2015/2/26 10:49:00
--
DataColChanging 事件,注意,修改的是 [客户产品号] 的时候
If e.DataCol.Name = "客户产品号" Then \'如果内容发生变动的是品名列 Dim dr As DataRow dr = DataTables("出库明细").Find("[客户产品号] = \'"& e.newValue & "\'and [客户订单号] = \'"& e.DataRow("客户订单号") & "\'and [订单行号] = \'"& e.DataRow("订单行号") & "\' ") If dr IsNot Nothing Then \'如果找到的话 msgbox("该订单已经出货了,不允许修改") e.Cancel = True Else e.DataRow("订货数量") = Nothing e.DataRow("含税单价") = Nothing e.DataRow("未税单价") = Nothing e.DataRow("交货日期") = Nothing e.DataRow("产品描述") = Nothing End If End If
|
-- 作者:youngling
-- 发布时间:2015/2/26 10:53:00
--
以下是引用Bin在2015/2/26 10:45:00的发言: e.oldValue 改为 e.datarow("列名")
改成这样还是不对
dr = DataTables("出库明细").Find("[客户产品号] = \'"& e.datarow("客户产品号") & "\'and [客户订单号] = \'"& e.DataRow("客户订单号") & "\'and [订单行号] = \'"& e.DataRow("订单行号") & "\' ")
|
-- 作者:有点甜
-- 发布时间:2015/2/26 10:57:00
--
看5楼,你的代码是修改 客户产品号 的时候,才会触发代码的啊,修改其它列不会触发啊。
[此贴子已经被作者于2015/2/26 10:58:04编辑过]
|
-- 作者:youngling
-- 发布时间:2015/2/26 12:10:00
--
DataColChanging 事件,改好了,代码如下:
If e.DataCol.Name = "客户产品号" Then \'如果内容发生变动的是品名列 Dim dr As DataRow dr = DataTables("出库明细").Find("[客户产品号] = \'"& e.oldValue & "\'and [客户订单号] = \'"& e.DataRow("客户订单号") & "\'and [订单行号] = \'"& e.DataRow("订单行号") & "\' ") If dr IsNot Nothing Then \'如果找到的话 msgbox("该订单已经出货了,不允许修改") e.Cancel = True Else e.DataRow("订货数量") = Nothing e.DataRow("含税单价") = Nothing e.DataRow("未税单价") = Nothing e.DataRow("交货日期") = Nothing e.DataRow("产品描述") = Nothing End If End If
可是还是没有用呀,会提示该订单已经出货了,不允许修改,客户产品号会保持不变但是,产品描述和材料编号还是变了: 这个应该是因为我在客户产品号里绑定了目录树,选中了某个客户产品号就会自动输入产品描述和材料编号,但是这个该如何改呢?
此主题相关图片如下:目录树1.jpg
[此贴子已经被作者于2015/2/26 12:11:45编辑过]
|
-- 作者:有点甜
-- 发布时间:2015/2/26 12:15:00
--
那你可以在下拉窗口那里也判断,如果找到对应的行,就提示,不能修改。
|
-- 作者:youngling
-- 发布时间:2015/2/26 12:33:00
--
以下是引用有点甜在2015/2/26 12:15:00的发言:
那你可以在下拉窗口那里也判断,如果找到对应的行,就提示,不能修改。
可以说具体点吗,不知道在哪里呢?
|