以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  目录树疑问  (http://foxtable.com/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的发言:

 那你可以在下拉窗口那里也判断,如果找到对应的行,就提示,不能修改。

 

可以说具体点吗,不知道在哪里呢?