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


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

主题:[求助]

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


加好友 发短信
等级:婴狐 帖子:21 积分:309 威望:0 精华:0 注册:2014/4/9 18:14:00
[求助]  发帖心情 Post By:2019/7/12 16:41:00 [只看该作者]

 我已经给某列设置了自定义列表项目,如图 ↓


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

我想让录入员只能录入列表项目内有的数据!就是数据必须和列表项目中存在的数据一致,才能保留

现在的情况是,录入员可以3种方式编辑数据:
1、手动输入、
2、也可以在列表上选择、
3、也可以复制黏贴的数据,

但是,除了第二种直接在列表上选择的方式,其他两种方式都可能存在数据和列表项目不一致的风险,我想不限制他们手动输入,也允许复制黏贴,但是会有一个验证过程,只有和列表项目中存在的数据一致,才能保留


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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/12 16:59:00 [只看该作者]


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


加好友 发短信
等级:婴狐 帖子:21 积分:309 威望:0 精华:0 注册:2014/4/9 18:14:00
  发帖心情 Post By:2019/7/12 17:16:00 [只看该作者]

 这个我已经试过,有两个问题
1、设置禁止手动编辑,只是不能手动编辑,但是可以复制黏贴内容进去的。
2、我是想允许他手动编辑或复制粘帖的,只是做个验证不是列表内容不保留

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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/12 17:33:00 [只看该作者]

组合框Validating事件

Dim str() As String = e.Sender.ComboList.Split("|")
If Array.IndexOf(str,e.Sender.Text) < 0 Then
    e.Cancel = True
    e.Sender.Error = "不在列表中"
Else
    e.Sender.Error = ""
End If

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


加好友 发短信
等级:婴狐 帖子:21 积分:309 威望:0 精华:0 注册:2014/4/9 18:14:00
  发帖心情 Post By:2019/7/15 10:14:00 [只看该作者]

 你好,我的是表格。。。不是窗体啊,表格属性里面找不到这个事件咯~~

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


加好友 发短信
等级:婴狐 帖子:21 积分:309 威望:0 精华:0 注册:2014/4/9 18:14:00
  发帖心情 Post By:2019/7/15 10:15:00 [只看该作者]

我想允许用户手动编辑是因为想用户使用字典功能、同时有时候项目过多手动输入反而比较快,但是输入的必须要验证和列表已有的项目一致的,不一致的话该单元格不会编辑成功的返回一个空值。
[此贴子已经被作者于2019/7/15 10:18:45编辑过]

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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/15 10:39:00 [只看该作者]

表格ValidateEdit事件

If e.Col.Name = "第二列" AndAlso e.Text > ""
    Dim str() As String = e.Col.ComboList.Split("|")
    If Array.IndexOf(str,e.Text) < 0 Then
        e.Cancel = True
        msgbox( "不在列表中")
    End If
End If

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


加好友 发短信
等级:婴狐 帖子:21 积分:309 威望:0 精华:0 注册:2014/4/9 18:14:00
  发帖心情 Post By:2019/7/15 11:14:00 [只看该作者]

 试了下哈,确实达到我想要的效果了,但是~!

还是有个问题咯:
输入非列表内容会被验证并弹出提示了,
但是,当我复制进去的内容,他并不会去验证,更不会有提示,如图附件——


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


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


加好友 发短信
等级:超级版主 帖子:110738 积分:563610 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/15 12:01:00 [只看该作者]

DataColChanging事件

If e.DataCol.Name = "第二列" AndAlso e.NewValue > ""
    Dim str() As String = Tables("表B").Cols("第二列").ComboList.Split("|")
    If Array.IndexOf(str,e.NewValue ) < 0 Then
        e.Cancel = True
        msgbox( "不在列表中")
    End If
End If

 回到顶部