以文本方式查看主题

-  易表在线答疑  (http://egrid2000.com/dvbbs/index.asp)
--  用户社区  (http://egrid2000.com/dvbbs/list.asp?boardid=2)
----  [求助]光标指向问题或在录入窗体上修改而后在表中被修改的地方显红色  (http://egrid2000.com/dvbbs/dispbbs.asp?boardid=2&id=1239)

--  作者:楚风
--  发布时间:2012/3/12 22:49:00
--  [求助]光标指向问题或在录入窗体上修改而后在表中被修改的地方显红色
[这个贴子最后由lyang70在 2012/03/14 04:55pm 第 2 次编辑]

egd文件下载
又要向老师请教了,怎样做才能点录入窗体中的第二列,表中光标就指向表中第二列的那个单元格呢?望求指教,谢谢,能不能做到,lyang70 老师,
--  作者:lyang70
--  发布时间:2012/3/13 9:19:00
--  
这个我是没有好办法!
你可以把你的最终要达到的目的说一下,看看还有没有其他解决思路...
--  作者:楚风
--  发布时间:2012/3/13 10:49:00
--  
好的,lyang70 老师,我要达到的目的是:
在录入窗体上修改而后在表中被修改的地方显红色,你看一下这个能不能做到,lyang70 老师,得到你的帮助很多,又给你添麻烦了,谢谢你啊
--  作者:lyang70
--  发布时间:2012/3/14 13:55:00
--  
供参考!
egd文件下载
--  作者:楚风
--  发布时间:2012/3/16 11:01:00
--  
谢了,我先拿去学习看一下,有不懂再请教您,谢谢lyang70
--  作者:楚风
--  发布时间:2012/3/16 21:56:00
--  
[1^@1]|[HH^@2]|[er^@3]|[ty^@4]|[y^@5]
里面的看不懂啊,@1或 @2表示什么意思呢?老师们给解释解释啊
--  作者:楚风
--  发布时间:2012/3/19 9:11:00
--  
里面公式好多引号和空白的理不懂啊,请老师给解释一下啊》谢谢
--  作者:lyang70
--  发布时间:2012/3/19 9:14:00
--  
[这个贴子最后由lyang70在 2012/03/19 09:17am 第 1 次编辑]

下面引用由楚风2012/03/16 09:56pm 发表的内容:
||||
里面的看不懂啊,@1或 @2表示什么意思呢?老师们给解释解释啊

这个主要是用于区别字符串而增加的特殊字符,简单点就是确保字符串的唯一性...

例如:[HH^@2]|
“HH”:就是指单元格的实际值;
“^@”:就是增加的特殊字符。
“2”:表示当前单元格所处的列位置。

仍然以这个例子说明:
1、在不增加特殊字符和列位置时:如果某个单元格修改前的值为“HH”(那值就为[HH])。我们要将其修改为“H”(那值就为[H])。这时如果用Substitute来替换,要替换的内容为[H],这样的话原来的[HH]就会全部替换。
2、在增加特殊字符和列位置时:如果某个单元格修改前的值为“HH”(那列表项目值就为[HH^@2])。我们要将其修改为[H](那列表项目值就为[H^@2])。这时如果用Substitute来替换,要替换的内容为[H^@2],这样的话原来的[HH^@2]就不会被替换。

——再设计过程中,我需要的是第二种效果,所以增加了特殊字符加列位置的方法来解决。这样同时对于修改过程中可能会将某个单元格的值清空或将某个空单元格增加值的修改都有效。


--  作者:lyang70
--  发布时间:2012/3/19 9:57:00
--  
下面引用由楚风2012/03/19 09:11am 发表的内容:
里面公式好多引号和空白的理不懂啊,请老师给解释一下啊》谢谢

至于引号和空格这是EVAL循环执行Substitute命令的语法参数,其完全以Substitute基本语法为基准,就目前楼主一时难以理解也正常。我认为楼主主要了解解决方案最关键。

解决思路为:

1、要素:定时器和变化值。

2、解决问题的思路。
2.1、增加“原始”、“修改”、“值1”、“值2”列。
2.1.1、原始列:即修改前的列的值。
2.1.2、修改列:即修改后的列的值,详见刷新公式(为何这样设置见楼上的解释)。
2.1.3、值1列:就是通过原始列值和修改列值对比,如果不同,就取原始列和修改列的不同值,反之。详见刷新公式(就是采用EVAL和SubstituteSubstitute命令)。
2.1.4、值2列:用取值1列(修改值)中的列位置参数。如果有修改,值2不为空,反之。详见刷新公式。

2.2、增加一个定时器,详见公式,目的在于检测有无修改操作(这个在录入窗口中,当然,也可以设为表预处理公式,这样的话无论在窗口或主表中修改都有效)。如果值2列大于0,就设修改单元格的背景为红色(选择背景色是考虑到如果将有值单元格替换成无值单元格的修改无法通过字体色体现),然后将原始列的值改回与修改列值相同并重算当前行。


——这样应该清楚些了吧?


--  作者:楚风
--  发布时间:2012/3/19 10:44:00
--  
lyang70 老师,这个公式太复杂了,目前以下的欠引号,故不能生效,但要再加,我真的不知如何加到哪里?要加多少引号?呵呵,我真的好难参透,你给我修改一下吧就是把它变成动态改变刷新公式,多次麻烦你,谢谢你啊
SetColFormula(GridName,"值1",Substitute(Substitute(If(Len([原始]) - Len(Substitute([原始],"|","")) < Len([修改]) - Len(Substitute([修改],"|","")),Substitute(Eval(Eval("Rept(" + """Substitute("",1 + Len([修改]) - Len(Substitute([修改],""|"","""")))" +  " + " + """[原始],"" + "  +  """""""""" + " + " + "Substitute([修改],""|"","  + """"""","""""""""  + "),"""""") + """""","""""""")""")),"|",""),Substitute(Eval(Eval("Rept(" + """Substitute("",1 + Len([原始]) - Len(Substitute([原始],""|"","""")))" +  " + " + """[修改],"" + "  +  """""""""" + " + " + "Substitute([原始],""|"","  + """"""","""""""""  + "),"""""") + """""","""""""")""")),"|","")),"[",""),"]",""))