我现在做的这个B/S系统出现了这样一个问题:在断网的情况用户仍然迫切需要进入B/S系统录入大量的数据,存在本机,等网通了马上再传到服务器。咋整?只好做一个静态页面,用户在通网的情况下先下载到本机,同时将一个.mdb的文件也下载下来,作为本机DB。断网时就打开这个Html页面录入数据,保存到.mdb文件中,通网了再从.mdb文件中读进数据,传回服务器。
通过Java的Applet来实现的话有点麻烦,由于一般情况下Applet是不允许访问客户端文件系统的,所以得通过数字签名并修改java.policy策略文件来保障和使其拥有访问本机文件的权限。
于是改用ActiveX,通过ADO来访问本机DB,较为方便,用户在第一次访问系统时ActiveX就自动注册到本机。只是使用ActiveX时浏览器会拦截并提示用户,不想每次都提示的话需要改IE设置,也有点麻烦。
做ActiveX自然是VB的强项,不过以前没用过,所以花了些时间来学习VB,制作ActiveX DLL 及ActiveX Control。又花了两天时间通读了MSDN中ADO的Guide部分,算是可以动手了。
总的流程如下:用VB开发一个ActiveX DLL,引用MS的ActiveX Data Object 2.8 Library库,然后就可以使用Connection、Command和RecordSet这三个主要ADODB对象来与那个Access文件进行交互了。编好函数后生成.dll动态链接库文件,这时VB帮我们自动注册到操作系统里了。如果要手工注册ActiveX的话用:regsrv2 C:/xxx.dll 命令即可(ActiveX Control的话是.ocx文件)。
最后在HTML页面中通过<object>标签引入这个ActiveX,这时可以借助MS的Design-time ActiveX Control Pad来自动生成这个ActiveX的clsid及各种属性,要不除了用exeScope之类的小软件来查看ActiveX的clsid外还真不知从何得知,果真是方便了不少,MS的东西就是易用,不过偶还是更喜欢Java的世界,呵呵。