以文本方式查看主题

-  易表在线答疑  (http://egrid2000.com/dvbbs/index.asp)
--  用户社区  (http://egrid2000.com/dvbbs/list.asp?boardid=2)
----  [求助]请问我的公式何处出错?  (http://egrid2000.com/dvbbs/dispbbs.asp?boardid=2&id=9727)

--  作者:w5cp
--  发布时间:2007/9/23 21:32:00
--  [求助]请问我的公式何处出错?
我在系统中的录入窗口中设置一“重算编号”按钮,其公式如下:
If(usertype < 3,SortCol(GridName,"时间",1) And SortCol(GridName,"日期",1) And RecalcCol("信息","自动编号","自动编号",1) And RecalcCol("信息","a","现场编号",1) And RecalcCol("信息","c","年度序号",1) And MsgBox("计算完毕,请检查!",1,4),MsgBox("你未被授权进行此项操作!",1,4))

请问此公式为何会触发“输入完毕”逻辑列中的操作公式(作判断字段是否填写完整与锁定行用)?

谢谢!!!


--  作者:w5cp
--  发布时间:2007/9/23 21:37:00
--  
[这个贴子最后由w5cp在 2007/09/23 10:16pm 第 1 次编辑]

因为录入的信息前后达三年之久,今年增加了四列内容,而前两年的数据相应的这四列并无数据,“输入完毕”列中的操作公式是用来判断此四列中的两列数据是否填写完整用的,故在点击按钮时,时不时会对前两年的数据进行验证的情况,出现“数据填写不完整”的提示。
望帮忙解决,谢谢!
--  作者:Czy
--  发布时间:2007/9/23 21:46:00
--  
改一下操作公式中的公式吧。
比如在原公式前加个判断,如:
if([日期]<$"2007-01-01",true,原公式)
加这个判断的意思是先对以前的老数据忽略,只判断指定日期后的数据。
--  作者:紫莲花
--  发布时间:2007/9/23 21:48:00
--  
将两年前的这四列内容.手工输入"#"等任意不会影响你的数据,又可让判断列接受的符号,可否?


--  作者:w5cp
--  发布时间:2007/9/23 21:53:00
--  
请问CZY版主:为何我的公式会触发操作公式???
to紫莲花:你的方法不适合我的系统,因为还会涉及到其他问题。
谢谢!!
--  作者:w5cp
--  发布时间:2007/9/23 22:02:00
--  
If([输入完毕] = -1,If([非职业人员] + [职业人员] <> [涉及车数] Or [涉及车数] <> Aggregate(2,rowsel,26,rowsel,30) Or IsBlank("sgrq") Or IsBlank("路名") Or IsBlank("方向") Or IsBlank("公里数") Or IsBlank("勘查人") Or IsBlank("天气") Or IsBlank("涉及车数") Or IsBlank("事故形态") Or IsBlank("事故原因") Or IsBlank("经济损失") Or IsBlank("车道") Or IsBlank("值班支队") Or IsBlank("值班大队") Or IsBlank("特别情况") Or IsBlank("事故编号") Or IsBlank("结案日期") Or IsBlank("处理人员"),MsgBox("有的项目未填写完整,请检查!",0,4) And SetCellText(GridName,rowsel,"输入完毕",0), True), True) And if([输入完毕] = -1,LockRow(row),UnlockRow(row))

我想了一下,没什么好的方法进行更改,特贴上公式,烦请各高手帮忙看看!


--  作者:Czy
--  发布时间:2007/9/23 22:03:00
--  
没看到文件很难做出正确的判断。
很大的原因是你进行重算后,相关列的数据有了改变,而操作公式又是根据这些列来判断的。


--  作者:w5cp
--  发布时间:2007/9/23 22:05:00
--  
上面这条公式是“输入完毕”列中的验证公式。

另请问我的第一个公式为何会触发此验证公式的?我不是在公式中设置过只重算刷新公式而不重算验证公式了吗?


--  作者:w5cp
--  发布时间:2007/9/23 22:12:00
--  
下面引用由czy2007/09/23 10:03pm 发表的内容:
没看到文件很难做出正确的判断。
很大的原因是你进行重算后,相关列的数据有了改变,而操作公式又是根据这些列来判断的。

回版主: 2007年前的数据无需对"事故编号"和"结案日期"两列进行判断即可让“输入完毕”列的值设为-1,即锁定本条数据,而2007年后的数据需要此两列内容填写完整后才可锁定,即才能认为输入完毕。

另问:如何在进行重算时能不触发某列的操作公式?


--  作者:程兴刚
--  发布时间:2007/9/23 22:28:00
--  
1、增加一个变量,在操作公式增加判断,当条件成立(变量的值等于空时),执行操作公式,否则不执行!
2、在您的那个计算公式的最前面给变量赋值,使之不等于空,这样操作公式的判断条件不能成立,就不执行了!
3、同时要在您的那个计算公式的最后面给变量赋值为空,使操作公式的判断条件,在其他情况下能够成立,返回正常执行状态!