以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]求教,窗口商品批量选中输入  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=21857)

--  作者:hrc11
--  发布时间:2012/7/26 10:40:00
--  [求助]求教,窗口商品批量选中输入

求教高手,窗口如何批量选中输入.

1、若点批量输入后,实现双击选中的商品,添加到下面表格,而上面表格的商品移除。点确定后,返回输入窗口。

2、若没点批量输入,双击选中的商品,返回输入窗口。(这个已实现)

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.table


图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:2.jpg
图片点击可在新窗口打开查看

--  作者:狐狸爸爸
--  发布时间:2012/7/26 12:03:00
--  

其实不复杂的,就是设置一个条件,隐藏已经选择的行就行了。

 

Dim r As Row = Tables("选择商品_Table1").Current
If forms("销售单").Opened Then
    Dim r1 As Row = Tables("销售单.销售明细").AddNew()
    r1("商品编号")=r("商品编号")
    r1("名称") = r("名称")
    r1("类别") = r("类别")
    r1("单位") = r("单位")
    r1("规格") = r("规格")
    r1("销售单价") = r("零售价")
    DataTables("销售明细").DeleteFor("商品编号 Is Null")
End If
Dim chk As WinForm.CheckBox = Forms("选择商品").Controls("CheckBox1")
If chk.Checked = False
    Forms("选择商品").Close()
Else
    If Tables("销售单.销售明细").Rows.count > 0 Then
        Dim ids As String
        For Each r1 As Row In Tables("销售单.销售明细").Rows
               ids = ids & "\'" & r1("商品编号") & "\',"
        Next
        Tables("选择商品_Table1").Filter = "商品编号 Not In (" & ids.Trim(",") & ")"
    Else
        Tables("选择商品_Table1").Filter = ""
    End If
End If

[此贴子已经被作者于2012-7-26 12:05:13编辑过]

--  作者:blackzhu
--  发布时间:2012/7/26 12:06:00
--  
在给我的东西,给版权啊!
--  作者:hrc11
--  发布时间:2012/7/26 17:27:00
--  

 Tables("选择商品_Table1").Filter = "商品编号 Not In (" & ids.Trim(",") & ")"

 

多谢狐爸,你的代码可以隐藏已选中的行。但能否仍保持目录树筛选的情况下,隐藏行呢?


--  作者:狐狸爸爸
--  发布时间:2012/7/26 17:30:00
--  

那就修改目录树的代码,将目录树合成的条件和我上面代码合成的条件,组合在一起就行了。


--  作者:hrc11
--  发布时间:2012/7/26 18:46:00
--  
狐爸,还是不行。把代码条件合成到目录树后,要双击目录树才有效。能否在选择行的同时进行筛选或保持原来的筛选呢?
--  作者:狐狸爸爸
--  发布时间:2012/7/27 8:09:00
--  

呵呵,一样的道理啊,选择行的时候,按照我的代码合成一个表达式,然后你根据目录树选定的节点合成一个表达式,将两者组合起来就行了。
根据选定节点合成表达式的例子:
 
Dim Value()As String
Dim trv As Winfrom.TreeView = e.Form.Controls("TreeView1")
Value = trv.SelectedNode.FullPath.Split("\\")
Dim Filter1 As Sring
Select Case trv.SelectedNode.Level
    Case 0
            Filter1 ="[产品] = \'" & Value(0) & "\'"
    Case 1
            Filter1 ="[产品] = \'" & Value(0) & "\' And [客户] = \'" & Value(1) & "\'"
    Case 2
            Filter1 ="[产品] = \'" & Value(0) & "\' And [客户] = \'" & Value(1) &"\' And [雇员] = \'" & Value(2) & "\'"
End Select

Dim  Filter2 As String

按照二楼的代码合成Filter2

If Filter1 >"" And Filter2 > ""  Then

    Tables("xxx").Filter  = Filter1 & " And " & Filter2

elseif  Filter1 >"" then

    Tables("xxx").Filter = Filter1 

Else

   Tables("xxx").Filter = Filter2  

End if

[此贴子已经被作者于2012-7-27 8:13:47编辑过]

--  作者:hrc11
--  发布时间:2012/7/27 9:33:00
--  
狐爸你好,还没搞定。见图(同一层下的“农夫山泉”已选,但table1还显示着,不能隐藏。),只能一部分隐藏。上传附件,帮忙看看。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.table


图片点击可在新窗口打开查看此主题相关图片如下:未命名.jpg
图片点击可在新窗口打开查看

--  作者:狐狸爸爸
--  发布时间:2012/7/27 9:56:00
--  

If Filter1 >"" And Filter2 > ""  Then
    Tables("选择商品_table1").Filter  = "(" &  Filter1 & ") And " & Filter2
ElseIf  Filter1 >"" Then
    Tables("选择商品_table1").Filter = Filter1
Else
    Tables("选择商品_table1").Filter = Filter2
End If

 

理由你可以自己想出来的。