网盘应用—Excel数据库开发:[2]另辟蹊径
1、第一步:在两台电脑上用同一账号登陆酷盘,同步文件夹都设置成D:\kp。
![网盘应用—Excel数据库开发:[2]另辟蹊径](https://exp-picture.cdn.bcebos.com/de9bfa3b3b860221f9a67fe5d8bbf82065fb7245.jpg)
2、第二步:电脑甲把一个Excel文档放进D:\kp,随即,该文档会出现在电脑乙的D:\kp中。(这个Excel文档的文件名为“e.xls”)
![网盘应用—Excel数据库开发:[2]另辟蹊径](https://exp-picture.cdn.bcebos.com/4e168d5653bbf820de0a7ab8ba21056105a36e45.jpg)
3、第三步:电脑乙打开“e.xls”,随便修改一个字符,存盘退出;然后打开电脑甲的“e.xls”,可以看到文档已发生改变,是刚刚在电脑乙修改后的模样。(同步成功!)
![网盘应用—Excel数据库开发:[2]另辟蹊径](https://exp-picture.cdn.bcebos.com/974a2f21056104a3ea186f1d63d7592ae2ef6b45.jpg)
4、第四步:电脑甲的“e.xls”处于打开状态,电脑乙打开“e.xls”输入字符“a”存盘退出,然后电脑甲输入字符“b”存盘退出,这时在两台电脑的D:\kp文件夹中会多出来一个文件:“e(name被冲突后的备份 2015-03-20-18-20-42).xls”。(发生冲突)
![网盘应用—Excel数据库开发:[2]另辟蹊径](https://exp-picture.cdn.bcebos.com/54a89daee8d7592a201e0ccb9f31dfb6336c6745.jpg)
5、第五步:现在,我们分别打开“e.xls”和它的冲突文件看一下,“e.xls”中存有“a”,而冲突文件中存有“b”。
![网盘应用—Excel数据库开发:[2]另辟蹊径](https://exp-picture.cdn.bcebos.com/e1390a31dfb6326c9f97757c89532f6322856045.jpg)
1、还有一种冲突解决办法是数据库系统中所采用的,是一套更完备也更复杂的技术。我们这里不必去研究这项技术,因为不会有人为我们免费搭建数据库服务器的。但是我们要借用其中的一些思路来解决我们的问题。数据库系统中的数据库位于系统核心位置,各种用户远程对其“按记录、或按字段读写”共享其中数据,这种读写方式是数据库系统得以广泛应用的基础,其基本思路是细化读写单位,由原来的"以文件为单位"细化到“以记录为单位”甚至“以字段为单位”,对数据的调度管理更加精细。
![网盘应用—Excel数据库开发:[2]另辟蹊径](https://exp-picture.cdn.bcebos.com/3fc72e486143d7d490c0e8587da75f0f832b5045.jpg)
![网盘应用—Excel数据库开发:[2]另辟蹊径](https://exp-picture.cdn.bcebos.com/5e4e9c2b74ee1c3294e9bd9f07f1d8a727334b45.jpg)
2、我们知道:没有数据库服务器就无法实现“按记录按字段读写”。现在我们来玩个“空间和时间置换”的游戏。我们的思路是:将一个Excel文件作为“数据库”放置在同步网盘中,各种用户通过宏代码对其进行读写,以本地单元格变化为触发点,即时将修改内容写入“数据库”,每一次写入快速执行一次“打开--读出--写入--关闭”的动作组合,由于时间极短,感觉上就好像“数据库”一直处于打开状态一样。
![网盘应用—Excel数据库开发:[2]另辟蹊径](https://exp-picture.cdn.bcebos.com/d9e638334884cde3adddba5df07f860e7d754245.jpg)
3、对“数据库”的读写操作——每次从打开到关闭的时间极短,也大大降低了发生冲突的几率,为编程控制冲突提供了条件。前面做实验的时候不是见过一个冲突文件吗?检测到冲突文件出现就说明写入不成功,需将其删除重新执行写入动作,直到不出现冲突文件为止。这是最终彻底解决冲突的流程。
OK!以单元格为单位对“数据库”进行读写,数据流不发生冲突——这不就是一个数据库系统吗?虽然算不上一个真正的数据库系统,不过具备了数据库的基本特征就可以开发出许多实用的应用,其最大优势在于免费。
(......未完待续!)
![网盘应用—Excel数据库开发:[2]另辟蹊径](https://exp-picture.cdn.bcebos.com/7a3e980e7c75e5f4100402beb1ceaad7736bbc45.jpg)