以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  当前行问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=184116)

--  作者:michl
--  发布时间:2022/11/24 9:55:00
--  当前行问题
当打开窗口时执行了filechanged删除行代码,如何能让之前选定的行不变?
比如图中当前行是D,此时执行了datatable("表A").deletefor("第一列 = \'B\'"),当前行会随之下移。如何让当前行还是D不变?

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


--  作者:有点蓝
--  发布时间:2022/11/24 10:24:00
--  
dim r as row = table("表A").current
datatable("表A").deletefor("第一列 = \'B\'")
table("表A").position = r.index

--  作者:michl
--  发布时间:2022/11/24 10:48:00
--  
谢谢!再追问两个问题:
1.同上代码中AppendLoad追加一行时,是否当前行不受影响
2.Delay疑问,比如delay=1秒,假设filechanged代码执行需要2秒,当多个用户触发监视器事件时会发生什么,delay属性应该如何设置比较合理?
   还是不用考虑这个,每个用户触发的事件都不会遗漏

--  作者:有点蓝
--  发布时间:2022/11/24 10:51:00
--  
1、正常没有影响,这种事件测试一下不就知道了
2、不同用户的操作都是独立的,监视的是自己电脑上的目录,和其它电脑没有什么关系

--  作者:michl
--  发布时间:2022/11/24 10:58:00
--  
1.测试了没有影响
2.监视的是共享文件,也就是每个电脑都可能会触发事件

--  作者:有点蓝
--  发布时间:2022/11/24 11:10:00
--  
不建议使用共享目录,可能会有冲突。比如A用户读取后马上删除了文件,其它用户可能还没有开始读取。又比如文件修改,A修改了文件,所有人触发了一次,B又修改这个文件,然后又触发一次
--  作者:michl
--  发布时间:2022/11/24 11:33:00
--  
文件被删除这个暂时不考虑。您说的另一种情况"又比如文件修改,A修改了文件,所有人触发了一次,B又修改这个文件,然后又触发一次"
这个正是希望达到的效果:每个用户修改文件后都触发一次。
我所担心的是会不会每个人修改文件后,因为filechanged代码执行时间问题,影响其他用户再修改再触发该事件。即每个用户修改后都能被执行触发一次,不被遗漏


--  作者:有点蓝
--  发布时间:2022/11/24 12:16:00
--  
文件修改后肯定触发。不过有个问题,a修改,紧接着b修改,这时c也读取了a修改后的文件,然后可能由于什么原因导致b还没有保存,这时理论上可能会出现在1秒内b和c同时保存了文件,可能b比c(或者相反)早保存10毫秒。导致a读取的文件只有b或者c其中一个人保存的内容,而且c也有可能没有办法读取到b保存的内容