以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=137686)

--  作者:tcseintist
--  发布时间:2019/7/12 16:41:00
--  [求助]
 我已经给某列设置了自定义列表项目,如图 ↓


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

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

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

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


--  作者:有点蓝
--  发布时间:2019/7/12 16:59:00
--  
参考:http://www.foxtable.com/webhelp/topics/0053.htm
--  作者:tcseintist
--  发布时间:2019/7/12 17:16:00
--  
 这个我已经试过,有两个问题
1、设置禁止手动编辑,只是不能手动编辑,但是可以复制黏贴内容进去的。
2、我是想允许他手动编辑或复制粘帖的,只是做个验证不是列表内容不保留

--  作者:有点蓝
--  发布时间: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
--  发布时间:2019/7/15 10:14:00
--  
 你好,我的是表格。。。不是窗体啊,表格属性里面找不到这个事件咯~~

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

--  作者:有点蓝
--  发布时间: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
--  发布时间:2019/7/15 11:14:00
--  
 试了下哈,确实达到我想要的效果了,但是~!

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


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


--  作者:有点蓝
--  发布时间: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