| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3136 人关注过本帖
标题:VFP对EXCEL读操作,如何防止用户另外启动EXCEL而造成错误。
取消只看楼主 加入收藏
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
结帖率:99.55%
收藏
已结贴  问题点数:100 回复次数:19 
VFP对EXCEL读操作,如何防止用户另外启动EXCEL而造成错误。
今天周日,本版块很冷清,发个问题活跃一下气氛,请各位献计献策:
我在VFP中逐行对EXCEL文件进行读操作的过程中,倘若另外又打开其他的EXCEL文件,读操作就会返回一个不确定的值,造成读入的数据不正确,甚至会因为数据类型不一致而造成程序运行错误。请问各位有没有好办法来解决这个问题。难道只有先将EXCEL全部导入到DBF中再作进一步处理这条路可走吗?
搜索更多相关主题的帖子: 数据 EXCEL 今天 如何 用户 
2012-05-06 16:57
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
楼上的思路不错!

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2012-05-06 22:16
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
应该是这样的原因。
如果是在对EXCEL进行操作之前已经有打开的EXCEL文件,则VFP建立的EXCEL对象就不会与之前用户打开的EXCEL文件相互干扰,如果VFP打开的EXCEL文件已经被用户打开,则VFP打开的只能是只读,对读入数据没有影响。
如果用户之前没有打开过EXCEL文件,而是在VFP对EXCEL进行操作的过程中打开EXCEL文件,就会对读操作有影响了。那末该如何设置让用户在新的进程中打开EXCEL文件呢?或者按照4楼的思路也应该可以解决问题。

关于是否使用同一个进程很容易区别,退出一个EXCEL窗口时,同一进程中的其他EXCEL文件都会被关闭,不同进程的EXCEL文件则不受影响。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2012-05-07 06:58
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
是VFP打开了已经打开的EXCEL文件时,通常不会提示错误,而是以只读的方式打开。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2012-05-07 07:20
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
这个不是问题。问题是如果用户之前没有启动EXCEL,在VFP打开EXCEL文件后才启动EXCEL,此时可能是使用了VFP打开EXCEL文件的进程,从而造成VFP读入的数据与单元格的值不一致,造成数据错误,甚至会因为数据类型不一致而造成保存数据到表中发生错误。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2012-05-07 07:28
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
楼上可能还不清楚我的问题。我的问题是:在VFP对EXCEL文件进行读操作时,用户打开了EXCEL文件(不一定是与VFP同一个文件)时,VFP读入的数据会与实际数据不一致,从而产生错误甚至会出错中断程序。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2012-05-07 07:35
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
以下是引用TonyDeng在2012-5-7 07:39:35的发言:


不是同一个文件,何来的VFP读入的数据与实际数据不一致?你两个文件有关联呀?VFP在读A,你打开B,A会受B的影响?我始终不明白你这个操作是用什么方式弄得出来的。
是这样的情况。只要是在VFP读EXCEL数据时用户打开任意一个EXCEL文件,就会影响到VFP读入的数据出错。而VFP读数据之前打开的EXCEL文件进行操作则不会影响到VFP读数据。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2012-05-07 07:54
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
这种情况是在VFP对EXCEL文件进行长时间操作时会出现。一般情况下程序在几秒钟内结束了对EXCEL文件的操作,用户还来不及另外打开EXCEL文件。只有程序对EXCEL文件的操作时间有十几秒甚至几十分钟时,用户才有时间去打开新的EXCEL文件,从而导致程序读数据出错。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2012-05-07 08:26
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
19楼的表达似乎有点野蛮,但其思路与4楼是大同小异的,即在VFP对EXCEL操作过程中暂时停止用户打开EXCEL表的权力。换个思路,如果我们能够让操作系统不使用VFP申请的EXCEL进程,而另外建立一个新的进程,可能问题就会迎刃而解了。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2012-05-07 17:47
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
今天测试了一下,在VFP对EXCEL读操作的时候,我在金蝶EAS系统中导出数据到EXCEL表也会引起VFP的读数据错误。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2012-05-09 19:07
快速回复:VFP对EXCEL读操作,如何防止用户另外启动EXCEL而造成错误。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.047040 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved