楼主是别的用户共享打开了B表,然后自己独占打开A表,想用append from B把B的数据追加到A中。在他的猜想中,觉得没有向B写数据,仅仅是读,应该是可以的,但事实上正是不可以,这是因为append from的运行机制所致。append from的动作,是把B表的若干条记录一次过复制到A中,为确保在这个操作过程中B的这批数据不被共享用户变动,系统应该锁定这批记录,而且这个指令是把各种格式的数据文件都统一起来的,诸如.txt、.xls之类文件也可以,因此它应是采用直接读磁盘数据的方式进行,当数据文件被共享打开,这种操作就会失败(估计是调用Shell接口的),这就是那个错误的原因——无法存取数据源文件。
本来这种需求很常见,只要自己编写一个函数读数据表的记录就可以了。共享表是任意可读的,关键是你要一条一条记录地读,不要指望使用现成的一条指令整批读(除非你确知它的动作机制不是如上所述那般),然后一条一条地写到目标表中。这里不需要关闭共享表,也不需要检测那个表是否已打开,即使A表也是共享的,也一样可以在共享状态下append blank然后replace。为了省点代码,企图使用一条语句完成,总是会发生点不如意的事,这个时候如果还不知道转弯,那就比较麻烦了。
自己编写两个分别读和写表记录的函数,本来就不是什么难事,写完了,终身可用,我不知道为什么有的人总是不愿意在这些工具性的地方着力,而总是要寻找一条指令。
[
本帖最后由 TonyDeng 于 2013-2-28 00:32 编辑 ]