Foxtable(狐表)用户栏目专家坐堂 → [求助]datamap


  共有9487人关注过本帖树形打印复制链接

主题:[求助]datamap

帅哥哟,离线,有人找我吗?
chnfo
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2200 积分:18097 威望:0 精华:0 注册:2011/11/26 20:21:00
[求助]datamap  发帖心情 Post By:2012/11/15 11:23:00 [显示全部帖子]

这样的要求用datamap能做吗?

当前表中当WPCKind值不同时,sourceID列从同一个表中选择数据,只是过滤条件不同。

文件上传有误 ,请看下帖


[此贴子已经被作者于2012-11-15 13:54:07编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2200 积分:18097 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2012/11/15 11:42:00 [显示全部帖子]

不好意思,附件里的说明错误。
说明里的表S就是表Source

或者有类似datamap的方法也可以。Combolist的方法我已经知道了。

重新上传
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:sotkey.rar

[此贴子已经被作者于2012-11-15 14:29:23编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2200 积分:18097 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2012/11/15 15:29:00 [显示全部帖子]

啊,这个问题 很复杂么?

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2200 积分:18097 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2012/11/15 15:51:00 [显示全部帖子]

最开始复制的时候写错了,应当是
要求当WPCKind=1时,SourceID从“Source”表中的T1=1的数据中选择
要求当WPCKind=2时,SourceID从“ Source ”表中的T2=1的数据中选择
要求当WPCKind=3时,SourceID从“ Source ”表中的T3=1的数据中选择

因为T1,T2,T3都是逻辑列,=1表示为“是”

如果把datamap放在prepareedit事件中,电脑CPU就消耗非常大。显然是不太合适的
[此贴子已经被作者于2012-11-15 16:08:27编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2200 积分:18097 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2012/11/15 16:36:00 [显示全部帖子]

没有datamap类型的变量啊,咋个存法?
MultiDataMap?
[此贴子已经被作者于2012-11-15 16:39:08编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2200 积分:18097 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2012/11/16 11:00:00 [显示全部帖子]

帮助里的那一段我看明白了。

其实,如果用combolist是没有问题的,我试过了
If e.IsFocusCell Then 
    If e.Col.Name = "SourceID" Then 
        Select Case e.Row("WPCKind")
            Case  1
                e.Col.Combolist = DataTables("Source").GetComboListString("T", "T1 = 1")
            Case  2
                e.Col.Combolist = DataTables("Source").GetComboListString("T", "T2 = 1")
            Case  3
                e.Col.Combolist = DataTables("Source").GetComboListString("T", "T3 = 1")
        End Select
    End If
End If

但是combolist只有一列,显示的信息太少,所以才想用datamap.

而datamap的方法我也理解。

做了一下,现在的问题是每换一个link节点,必须去Source表上点一下,SourceID这一列的下拉列表才符合要求。如果不去Source上切换一下,不管切换哪个link节点,SourceID的下拉列表值是一样的。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:sotkey20121116.rar

怎么改进呢?


 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2200 积分:18097 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2012/11/16 15:13:00 [显示全部帖子]

这个例子看明白了。
1.定义一个全局变量数据字典,它是数组形式的
2.在打开项目的时候,就定义这个数组
3.在Mainchanged事件中,定义数组各个值的具体内容
4.在topicbar中应用数据字典

追问一下:如果不用topicbar,而是直接进入界面中填表(也就是整个界面上新增行时可以选择WPCKind=1或2或3,然后下拉 sourceID选择)。

这个表中的WPCKind是一个已经定义好的数据字典(只有1,2,3三个值),那么maintablechanged事件又该如何做呢?

意即在WPCKind选择1,则sourceID下拉C1,C2,C3备选
在WPCKind选择2,则sourceID下拉C4,C5,C6备选
在WPCKind选择3,则sourceID下拉C7,C8,C9,C10备选
[此贴子已经被作者于2012-11-16 16:22:26编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2200 积分:18097 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2012/11/16 16:27:00 [显示全部帖子]

这个方法放在prepareedit事件中,我开始也试过了。

问题 跟你所表现出来的一样。界面上看不到,但数据库里是存在的。
而且光标换行的时候,可能导致某些行的数据集体消失,再点一下其它行,又莫名其妙地显示出来。


我开始还以为是我在哪里的代码出了问题 ,或是数据字典的构造不能放在prepareedit事件中…………
原来并不是我这里的问题,我觉得可能是BUG


还有一个彻底解决办法————用自定义录入界面之三,虽然麻烦一点,但是免得纠结…………


[此贴子已经被作者于2012-11-16 17:21:28编辑过]

 回到顶部