以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]窗口中的下拉列表的筛选 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=55277) |
-- 作者:蝙蝠侠K02 -- 发布时间:2014/8/13 16:34:00 -- [求助]窗口中的下拉列表的筛选 我在窗口中添加一个查询表,该查询表用FILL的方法从“用户表”在打开窗口时只加载表结构。 同时,在窗口添加一个组合框,点击组合框,下拉列表的数据项为“部门名称”,选中其中“部门名称”, 从“用户表”按“部门名称”进行加载该部门下的用户。组合框的SelectedIndexChanged代码如下,系统代码出错, 提示“至少缺一个参数”。我知道是And 用户姓名 not In (" & ids & ") 有问题,去掉此句,一切正常。 但我想将ids 出现过的用户过滤掉,不知如何去做?
With DataTables("人员添加窗口2_Table1") Dim ids As String = Vars("checkeduser") If ids > " " Then .LoadFilter = "部门名称 = \'" & e.Sender.Value & "\' And 用户姓名 not In (" & ids & ") " .Load() Else .LoadFilter = "部门名称 = \'" & e.Sender.Value & "\'" .Load() End If End With |
-- 作者:有点甜 -- 发布时间:2014/8/13 16:37:00 -- 你的ids生成有问题。
你的ids必须是这种形式的,比如 idx = "\'AAAA\',\'BBB\',\'CCC\'" 用户姓名 not In (" & ids & ")
|
-- 作者:蝙蝠侠K02 -- 发布时间:2014/8/13 17:15:00 -- 生成IDS 的代码如下:
Dim ids As String With Tables("用户选择临时表") For Each dr As Row In .Rows ids = ids & "," & dr("用户姓名") Next ids= ids.Trim(",") If Forms("新建任务窗口").Opened Then Dim s As String = Vars("fn") Select Case s Case 1 \'责任人 Dim tx As WinForm.TextBox = Forms("新建任务窗口").Controls("TextBox4") tx .Value = ids Case 2 \'参与人 Dim tx As WinForm.TextBox = Forms("新建任务窗口").Controls("TextBox5") tx .Value = ids End Select End If Vars("checkeduser") = Vars("checkeduser") & "," & ids \'将本次已选用户加入已选用户变量中 Vars("checkeduser")= Vars("checkeduser").Trim(",") End With |
-- 作者:有点甜 -- 发布时间:2014/8/13 17:19:00 -- 改一下
For Each dr As Row In .Rows ids = ids & "\'" & dr("用户姓名") & "\'," Next ids= ids.Trim(",") |
-- 作者:有点甜 -- 发布时间:2014/8/13 17:21:00 -- 或者,你前面不用改,你最后的代码改一下
With DataTables("人员添加窗口2_Table1") Dim ids As String = Vars("checkeduser") If ids > " " Then .LoadFilter = "部门名称 = \'" & e.Sender.Value & "\' And 用户姓名 not In (\'" & ids.Replace(",", "\',\'") & "\') " .Load() Else .LoadFilter = "部门名称 = \'" & e.Sender.Value & "\'" .Load() End If End With |
-- 作者:蝙蝠侠K02 -- 发布时间:2014/8/13 17:59:00 -- 按4楼 我试了一下,出现‘张三’,,’李四’,重复(,,) 我将ids = ids & "\'" & dr("用户姓名") & "\'," 改为ids = ids & "\'" & dr("用户姓名") "\'", 只出现一个(,),但试一下,还是不行。
我再试一下5楼的代码 |
-- 作者:蝙蝠侠K02 -- 发布时间:2014/8/13 18:27:00 -- 我试了一下5楼的代码,系统不报错了,但仍没有将已有的用户(IDS中)过滤掉,请甜老师再看一下! |
-- 作者:有点甜 -- 发布时间:2014/8/13 19:13:00 -- 回复7楼,没有理由,例子发上来
你msgbox(DataTables("人员添加窗口2_Table1").LoadFilter)看看条件是否设置正确。 |
-- 作者:蝙蝠侠K02 -- 发布时间:2014/8/14 9:45:00 -- 我又试了一下。可以了,谢谢! 我还有一个问题,我想将如下ids 变成\'AAAA\',\'BBB\',\'CCC\',怎么写代码? dim idx as string = AAAA,BBB,CCC |
-- 作者:有点甜 -- 发布时间:2014/8/14 9:56:00 -- idx.Replace("\'", "") |