以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何排除重复值的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=129492)

--  作者:304376480
--  发布时间:2018/12/29 15:56:00
--  如何排除重复值的问题
老师您好! 问题不太好描述,所以直接上了实例!

我想做一个可以批量往仓库中放入商品资料的窗口,所以仓库中已有的商品不能显示在窗口中,

比如:往A仓库放商品则只显示A仓库以外的商品,而且不显示A仓库中已有的商品ID

也就是说:示例中选择A仓库,应该只显示商品 14,16 才是正确的!
选择B仓库,应该只显示商品 1,5,6,16 才是正确的!

不知从何下手,请老师帮助!

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:重复值的问题.foxdb



--  作者:有点蓝
--  发布时间:2018/12/29 16:30:00
--  
Dim Filter As String
If e.sender.text = "" Then
    Filter = ""
Else
    Filter = "[仓库] <> \'" & e.sender.text & "\'"
    Dim str As String = DataTables("产品").GetComboListString("商品ID","[仓库] = \'" & e.sender.text & "\'")
    Filter = Filter & " and 商品ID not in (\'" & str.Replace("|","\',\'") & "\')"
End If

Tables("窗口1_Table1").Filter = Filter


--  作者:304376480
--  发布时间:2018/12/29 22:41:00
--  
完美解决,谢谢啦!

只是还有点疑问,这种把仓库中所有的商品都列出来比较的话,如果商品数量成千上万的时候,会卡或者崩溃吗?图片点击可在新窗口打开查看
[此贴子已经被作者于2018/12/29 23:15:05编辑过]

--  作者:有点甜
--  发布时间:2018/12/30 9:38:00
--  
以下是引用304376480在2018/12/29 22:41:00的发言:
完美解决,谢谢啦!

只是还有点疑问,这种把仓库中所有的商品都列出来比较的话,如果商品数量成千上万的时候,会卡或者崩溃吗?图片点击可在新窗口打开查看
[此贴子已经被作者于2018/12/29 23:15:05编辑过]

 

1、这种查询本来效率就比较低,具体有多低,你自行测试;

 

2、你可以添加辅助列处理,那些已经确定重复的值,加一个标记,下次直接筛选标记列,不需要重复这样操作。

 


--  作者:304376480
--  发布时间:2018/12/30 16:58:00
--  
以下是引用有点甜在2018/12/30 9:38:00的发言:

 

2、你可以添加辅助列处理,那些已经确定重复的值,加一个标记,下次直接筛选标记列,不需要重复这样操作。

 

辅助列?是添加一个字符列,然后把商品的所在仓库用数组{A,B,C}标记出来吗?
--  作者:有点甜
--  发布时间:2018/12/30 17:23:00
--  
以下是引用304376480在2018/12/30 16:58:00的发言:

辅助列?是添加一个字符列,然后把商品的所在仓库用数组{A,B,C}标记出来吗?

 

比较叫做【A显示】列,所有满足条件的行,设置为true,不满足的设置成false,下次筛选,直接筛选 a显示=true 的行。

 

 


--  作者:304376480
--  发布时间:2018/12/30 18:35:00
--  
好的,谢谢了,现在先不研究这个了,以后有需要再来搞吧!