以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]帮忙看下这个筛选树的代码 谢谢  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=34091)

--  作者:jiskin
--  发布时间:2013/5/30 11:38:00
--  [求助]帮忙看下这个筛选树的代码 谢谢

在"生产进度表"里分别有两列"零件名称"和"工艺原料"调用筛选树窗口,但是现在情况是 两列不管是在哪列里面操作 都同时变发更改了……就像没做列判断一样! 请帮忙看看哪里写错了!

 

If e.Node.Level = 0 OrElse e.Node.Level = 1 Then \'如果是顶层节点
    Return \'则返回
End If
Dim Vals() As String = e.Node.FullPath.Split("\\")
Dim Filter As String
Filter = "[库存类别] = \'" & Vals(0) & "\' And [品名] = \'" & Vals(1) & "\' And [零件号] = \'" & Vals(2) & "\'"
Dim dr As DataRow = DataTables("库存总表").Find(Filter)

For Each t As Col In Tables("生产进度表").Cols
    Dim r As Row = Tables("生产进度表").Current
    If t.Name = "零件名称" Then
        r("零件名称") = dr("品名")
        r("零件号") = dr("零件号")
    ElseIf t.Name = "工艺原料" Then
        r("工艺原料") = dr("零件号")
    End If
    e.Form.Close()
Next

[此贴子已经被作者于2013-5-30 11:39:55编辑过]

--  作者:fjlclxj
--  发布时间:2013/5/30 11:45:00
--  
For Each t As Col In Tables("生产进度表").Cols
    Dim r As Row = Tables("生产进度表").Current
    If t.Name = "零件名称" Then
        r("零件名称") = dr("品名")
        r("零件号") = dr("零件号")
    ElseIf t.Name = "工艺原料" Then
        r("工艺原料") = dr("零件号")
    End If
    e.Form.Close()
Next
这段是干嘛呢

--  作者:Bin
--  发布时间:2013/5/30 11:45:00
--  
请问能不能上例子,有例子的话效果比较直观,也可以测试一下看看是什么情况.  比单单看着代码靠脑补速度快得多.

想要问题快速得到解决,只少要方便一下帮助你的人吧?

--  作者:jiskin
--  发布时间:2013/5/30 11:49:00
--  
以下是引用fjlclxj在2013-5-30 11:45:00的发言:
For Each t As Col In Tables("生产进度表").Cols
    Dim r As Row = Tables("生产进度表").Current
    If t.Name = "零件名称" Then
        r("零件名称") = dr("品名")
        r("零件号") = dr("零件号")
    ElseIf t.Name = "工艺原料" Then
        r("工艺原料") = dr("零件号")
    End If
    e.Form.Close()
Next
这段是干嘛呢

 

我只是想在同一个表里 不同列调用这个筛选窗口做填写


--  作者:jiskin
--  发布时间:2013/5/30 11:51:00
--  
以下是引用Bin在2013-5-30 11:45:00的发言:
请问能不能上例子,有例子的话效果比较直观,也可以测试一下看看是什么情况.  比单单看着代码靠脑补速度快得多.

想要问题快速得到解决,只少要方便一下帮助你的人吧?

 

因为项目里有很多数据,做例子也太麻烦了,如果发代码解决不了的话 我就只好去做例子了……图片点击可在新窗口打开查看


--  作者:Bin
--  发布时间:2013/5/30 11:55:00
--  
以下是引用jiskin在2013-5-30 11:51:00的发言:

 

因为项目里有很多数据,做例子也太麻烦了,如果发代码解决不了的话 我就只好去做例子了……图片点击可在新窗口打开查看


就是麻烦别人,方便自己呗图片点击可在新窗口打开查看

你这样循环列.怎么得都会有一次是 零件名称 一次是  工艺原料的好吧

--  作者:jiskin
--  发布时间:2013/5/30 11:59:00
--  
以下是引用Bin在2013-5-30 11:55:00的发言:


就是麻烦别人,方便自己呗图片点击可在新窗口打开查看

你这样循环列.怎么得都会有一次是 零件名称 一次是  工艺原料的好吧

 

就是这个问题啊!闹不明白,为什么会两个都循环出来呢~图片点击可在新窗口打开查看 你一定要帮我啊~


--  作者:Bin
--  发布时间:2013/5/30 12:01:00
--  
这个怎么会不明白.   你循环   123456  你判断1就执行代码块1  判断2就执行代码块2    那么你循环的时候 肯定代码块1和代码块2都执行的啊.

因为你循环是1-2-3-4-5-6  第一次循环执行代码块1 第二次循环不就执行代码块2了吗? 有什么不明白的?



--  作者:jiskin
--  发布时间:2013/5/30 12:04:00
--  
以下是引用Bin在2013-5-30 12:01:00的发言:
这个怎么会不明白.   你循环   123456  你判断1就执行代码块1  判断2就执行代码块2    那么你循环的时候 肯定代码块1和代码块2都执行的啊.

因为你循环是1-2-3-4-5-6  第一次循环执行代码块1 第二次循环不就执行代码块2了吗? 有什么不明白的?


 

可是我选择"零件名称"列的时候 为什么"工艺原料" 也会变化呢?

难道 If t.Name = "零件名称" Then 不算判断列吗?

求指点

 


--  作者:Bin
--  发布时间:2013/5/30 12:04:00
--  
For Each t As Col In Tables("生产进度表").Cols

你循环的是所有列好吧..
那么请问你IF判断有意义吗?像你这样的.
第一次列名1  符合第一个个条件  那么ELSEIF不执行正常啊.

那么第二次呢?你无视掉了? 变列名2了. 那不是不符合第一个IF条件  符合ELSEIF的条件了吗?  那不就执行ELSEIF了吗?
[此贴子已经被作者于2013-5-30 12:05:49编辑过]