以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]请教,关于导入的数据的验证方法  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=146625)

--  作者:头狼
--  发布时间:2020/2/27 18:31:00
--  [求助]请教,关于导入的数据的验证方法
先谢谢论坛老师最近的指点,《使用指南》层面的我还马马虎虎,《开发指南》层面的我没基础,只能复制粘贴,修修改改。
我想实现一个控制:
我单独建立【客户表】,用来存放所有客户名称等信息。
在录入其他表例如“合同表”的时候,如果录入的“客户名称”不在【客户表】里(错字也不行),就让录入的字体变成红色,单元格背景变成黄色。

我已知的内容:
如果“合同表”是一条一条录入新增的,可以利用“列表项目”、“目录树”、“禁止直接编辑”这些功能来约束以达到录入准确。
但是,如果“合同表”是导入数据的,那些约束就无效了,
就得有方法来验证“客户名称是否都在客户表里”。

另外,如果列属性设置了“禁止重复”,对于导入的数据如何检查一遍?“重置列”可以吗?
[此贴子已经被作者于2020/2/27 18:41:48编辑过]

--  作者:sloyy
--  发布时间:2020/2/28 1:15:00
--  

你说的这些,都是使用方面的,要校验导入的数据,必须写代码,要从头开始慢慢看开发指南;

先说校验吧:你要在ValidateEdit事件里面写代码,查询客户表看看是否有同名记录,

如果有,就要用到DrawCell事件 调用预先设置好的自定义样式黄底红字


--  作者:有点蓝
--  发布时间:2020/2/28 9:57:00
--  
导入的时候就进行判断:http://www.foxtable.com/webhelp/topics/2334.htm
--  作者:头狼
--  发布时间:2020/2/28 19:31:00
--  
谢谢楼上的老师们。
“导入的时候就判断”在我目前的使用情景不太友好,会打断导入过程。
我还是希望能允许导入,然后给出警示,让同事去修正错误。
高级筛选-关联筛选 功能里,可以勉强实现我的需求,但此功能藏得比较深。

另外,对很多表的“禁止重复”的数据列,如何快速警告呢?
[此贴子已经被作者于2020/2/28 19:33:27编辑过]

--  作者:sloyy
--  发布时间:2020/2/28 19:38:00
--  
不写代码,很多功能是没法实现的.
--  作者:有点蓝
--  发布时间:2020/2/28 20:47:00
--  
那就到drawcell里查询,然后设置样式
--  作者:头狼
--  发布时间:2021/9/11 10:26:00
--  
老师,我又遇到这个问题了。
没懂您说的。

订单表里的“客户”,需要验证“是否存在于客户表的“客户”列”。

--  作者:有点蓝
--  发布时间:2021/9/11 11:01:00
--  
drawcell事件

if e.col.name = "客户" andalso e.row.isnull("客户") = false then
if tabels("客户").compute("count(客户)","客户=\'" & e.row("客户")  & "\'") =0 then
e.style = "样式1"
end if
end if

--  作者:头狼
--  发布时间:2021/9/16 8:35:00
--  
以下是引用有点蓝在2021/9/11 11:01:00的发言:
drawcell事件

if e.col.name = "客户" andalso e.row.isnull("客户") = false then
if tabels("客户").compute("count(客户)","客户=\'" & e.row("客户")  & "\'") =0 then
e.style = "样式1"
end if
end if


谢谢老师,我成功了。
我有个疑问啊:当“条件”不满足后,单元格的 style 自动恢复成默认了,这是怎么实现的啊?


--  作者:有点蓝
--  发布时间:2021/9/16 8:48:00
--  
只有符合条件e.style 才会等于 "样式1"。否则就是空的