以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  数据表字典  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=145585)

--  作者:tld
--  发布时间:2020/1/31 23:46:00
--  数据表字典
老师,我在学习数据表字典作为下拉框选取数据,但不知道filter怎么用。下列代码中filter的使用方法有问题,把第二列都 filter了,您帮忙看看。谢谢

Dim dmp As New TableDataMap
dmp.DataTable = "表A" \'指定数据来源表
dmp.ValueCol = "第二列" \'指定取值列
dmp.DisplayCol = "第二列" \'指定显示列
\'指定下拉列表时显示哪些列的数据
dmp.ListCols = "第二列" 

dmp.Filter = "[第一列] = \'" & Tables("表A").current("第一列") & "\'"

Tables("表A").Cols("第二列").DataMap = dmp.CreateDataMap() \'生成并设置DataMap

另外,上述代码最好放在哪个事件中,在哪里关闭datamap?
[此贴子已经被作者于2020/1/31 23:54:18编辑过]

--  作者:有点蓝
--  发布时间:2020/2/1 9:05:00
--  
这个表AfterSelChange事件

Dim c As Col = e.Table.Cols(e.NewRange.ColSel)

If c.Name = "第二列" AndAlso e.OldRange.RowSel <> e.NewRange.RowSel  \'如果选择的是不同的行
    If e.OldRange.RowSel >=  0  AndAlso e.OldRange.Rowsel < e.Table.Rows.Count Then  \'而且原来选择的是一个有效的数据行
        Dim r  As  Row = e.Table.Rows(e.NewRange.Rowsel) \'获得新选择的行
        If r.IsNull("第一列") Then
            c.DataMap = Nothing
        Else
            Dim dmp As New TableDataMap
            dmp.DataTable = "表A" \'指定数据来源表
            dmp.ValueCol = "第二列" \'指定取值列
            dmp.DisplayCol = "第二列" \'指定显示列
            \'指定下拉列表时显示哪些列的数据
            dmp.ListCols = "第二列"
            dmp.Filter = "[第一列] = \'" & r("第一列") & "\'"
            c.DataMap = dmp.CreateDataMap()
        End If
    End  If
End If

--  作者:tld
--  发布时间:2020/2/1 11:18:00
--  

老师,将上述代码拷贝到 afterselchange 后,在mouseleavecell中加人代码: 
Tables("表A").Cols("第二列").DataMap = Nothing  
有如下情况:
1:重新启动狐表,第二列的数据如图。点击第九行的第二列后 第二列 1~7行数据都没有了。
2:第二列的数据不可编辑





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

图片点击可在新窗口打开查看此主题相关图片如下:捕获1.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2020/2/1 11:19:40编辑过]

--  作者:有点蓝
--  发布时间:2020/2/1 11:39:00
--  
去掉mouseleavecell代码,没有必要
--  作者:tld
--  发布时间:2020/2/1 15:16:00
--  
老师,我把例子传上来,点击第二列,就会有许多行第二列的内容被隐藏


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



--  作者:有点蓝
--  发布时间:2020/2/1 15:22:00
--  
嗯,数据字典是对整列起作用的,经过筛选后,数据字典不存在的数据就无法显示了。

建议改为使用下拉窗口吧http://www.foxtable.com/webhelp/topics/2116.htm