易表在线答疑技术与交流用户社区 → 数据丢失之烦恼


  共有7271人关注过本帖树形打印复制链接

主题:数据丢失之烦恼

帅哥哟,离线,有人找我吗?
陆小三儿
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:149 积分:0 威望:0 精华:0 注册:2006/10/17 21:46:00
数据丢失之烦恼  发帖心情 Post By:2008/2/23 20:49:00 [只看该作者]

我做的系统数据输入和数据库是分开的,客户端的数据库文件只是起到往服务器端易表数据库文件中输入数据的功能,看我下面的公式可能明白些:

if(CanWrite([%datapool%]) = False,msgbox("有其他用户正在存盘,请稍候!",1,3),OpenModalWindow(13) And Export([%datapool%],"数据库","888","数据库","ID", "=",[ID]) And Export(docdir+"bak/databack.egd","数据库","888","数据库","ID", "=",[ID])  And Export([%datapool%],gridname,"888",gridname,"ID", " = " ,[ID]))

变量:%datapool%为表达式型:"\\192.168.1.12\chddp$\datapool.egd" ,代表服务器端的数据库文件;

从这个命令公式来看,我首先判断服务器端数据库是否有人在进行export等只允许单个用户进行的操作,如果无,就将客户端中“数据库”表和当前表中的数据导出到服务器端的datapool.egd文件中;

总共可能会有5到7台电脑会向数据库中输入数据;

现在使我比较头疼的是,每个月下来,总会发现一些数据会遗失掉,300多条数据总会遗失近10例,这是一个大问题,如果数据不准确,一切都是空谈,目前我也正在着力发现问题所在;

同时也希望各位高手能帮我指导一下,数据丢失是因为我这样设计的BUG?还是可能网络质量影响?还是因个别电脑而起(据查,并无很特别规律)?


 回到顶部
帅哥哟,离线,有人找我吗?
Czy
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13147 积分:-89 威望:0 精华:0 注册:2006/8/11 11:14:00
  发帖心情 Post By:2008/2/23 20:59:00 [只看该作者]

联系一下tzszw,他比较有使用经验。

 回到顶部
帅哥哟,离线,有人找我吗?
陆小三儿
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:149 积分:0 威望:0 精华:0 注册:2006/10/17 21:46:00
  发帖心情 Post By:2008/2/23 21:05:00 [只看该作者]

谢谢czy版主关注。

 回到顶部
帅哥哟,离线,有人找我吗?
kylin
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:业余侠客 帖子:399 积分:0 威望:0 精华:0 注册:2006/8/12 12:11:00
  发帖心情 Post By:2008/2/24 8:19:00 [只看该作者]

楼主:
根据经验,还是分别各个电脑独立实施数据,然后用合并功能再集合所有数据,网络共享情况下还是没有办法完全避免丢失数据的可能

 回到顶部
帅哥哟,离线,有人找我吗?
陆小三儿
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:149 积分:0 威望:0 精华:0 注册:2006/10/17 21:46:00
  发帖心情 Post By:2008/2/24 21:06:00 [只看该作者]

谢谢关注,我现在比较怀疑export函数在局域网环境下的稳定性,也准备采取其他措施加以弥补。

 回到顶部
帅哥哟,离线,有人找我吗?
tzszw
  6楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:蒙面侠 帖子:2409 积分:400 威望:0 精华:0 注册:2006/8/14 19:31:00
  发帖心情 Post By:2008/2/25 1:24:00 [只看该作者]

建议你将表达式型变量%datapool%的值"\\192.168.1.12\chddp$\datapool.egd" 中的服务器IP段内容改为服务器的机器名,这样再试试,我多次测试,用服务器的IP和用机器名效果不同,可能是与操作系统有关系。
有一次为这个问题我测试了老半天才解决!
你这样用变量不太方便日后维护,建议象下图这样通过增加“高级设置”窗口来解决会更方便维护(限管理员或授权用户使用):

另外,也要注意机器上杀毒或防毒软件的设置,有一次一台机器(IBM)自带的防毒软件自动设置成可以接受数据但不可传出数据,害我几乎一夜没睡也没解决问题,还是第二天关闭了防毒软件才解决问题!

所以说,有时要找找其他问题,不一定都是易表程序设置有问题。


 回到顶部
帅哥哟,离线,有人找我吗?
hayz
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:业余侠客 帖子:300 积分:0 威望:0 精华:0 注册:2006/8/22 16:20:00
  发帖心情 Post By:2008/2/25 11:53:00 [只看该作者]

上面的高手可以把“高级设置”发上来共享一下吗?

 回到顶部
帅哥哟,离线,有人找我吗?
歌理
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:69 积分:0 威望:0 精华:0 注册:2006/11/9 16:03:00
  发帖心情 Post By:2008/2/25 19:19:00 [只看该作者]

这个问题我也碰到过,不是易表的问题,也不是公式问题,也不是网络问题,应该说是网络冲突问题,刚好有两个人同一时间执行了同样操作(网络总有迟延)。比如,第一个人申请打读写某个文件,并且系统已经允许他读写,由于他网速慢,在他还没有真正执行读写之前,另一个可能网速更快的客户,也申请读写,这就有可能两人同时读写,造成数据被覆盖或丢失。
具体的情况要根据个人的情况及易表的网络原理,具体问题,具体分析。

我将我的一个具体例子给你做个参考:
我有个来电配送系统,有几电脑终端同时工作,任何一个打来电话的客户信息将同时出现在几台不同地点的终端机上,任何一台终端机的工作人员均能对同一信客户要求进行处理,但是任何时候只能有一台(任意一台)终端机能对该信息进行处理,否则将出现错误。
刚开始我用普通的方法进行网络设置时,经常随机出现问题,不是重复了,就是有些信息没被处理。。。。。

我通过增加判别识别文件的方法,达到任何时候只能由一个操作的目的,简单说如下,工作人员A想处理某信息的流程:
判断服务器上有识别文件A或识别文件B,有A删A生成B文件,有B删除B生成A文件(若不能操作,说明有其他工作人员已经操作,本人退出),并且记住自己生成的文件信息--》提取客户信息(待处理)到本机---》核对服务器上的识别文件信息是否已被改变,若已经改变,说明其他人提前操作,本人退出,若信息一致,可删除服务器的客户信息(防止其他工作人员再次操作,保证只能一人操作)--》处理信息---》按上述过程存回服务器。

说得不很具体,希望能对你有所帮助。


 回到顶部
帅哥哟,离线,有人找我吗?
tzszw
  9楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:蒙面侠 帖子:2409 积分:400 威望:0 精华:0 注册:2006/8/14 19:31:00
  发帖心情 Post By:2008/2/25 19:55:00 [只看该作者]

下面引用由歌理2008/02/25 07:19pm 发表的内容:
这个问题我也碰到过,不是易表的问题,也不是公式问题,也不是网络问题,应该说是网络冲突问题,刚好有两个人同一时间执行了同样操作(网络总有迟延)。比如,第一个人申请打读写某个文件,并且系统已经允许他读 ...

呵呵,愿闻其详!
不知歌理兄能否提供例程(或根据实际应用的简化版)?也许例程更能达到“释疑解惑”的目的... ...


 回到顶部
帅哥哟,离线,有人找我吗?
陆小三儿
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:149 积分:0 威望:0 精华:0 注册:2006/10/17 21:46:00
  发帖心情 Post By:2008/2/25 20:34:00 [只看该作者]

tzszw兄,你的文件以前我已经研究过,对我很有帮助,实际上我用的确实是服务器名,比如CHDDP,而不是IP地址,因为后者在路由器释放DHCP时可能发生变化,顶楼我只是随便输入一个IP以进行举例;

歌理兄的阐述可能我还没有完全吃透,但请注意我的公式中有一个canwrite函数的判断,也即导入数据的时候首先判断有没有人在操作,有的话就不会允许操作者继续下去,否则就可以进行export操作。

曾有易友提出用merge函数,但研究后发现只有从服务器端向客户端操作才适合用这个函数,由客户端到服务器端不大合适。


 回到顶部
总数 12 1 2 下一页