-
vfp教程之VFP下客户机访问任意映射服务器的方法
在开发网络多用户应用系统时,VFP的程序员常采用如下方法:将1个或多个数据库(.DBC及.DBF)作为共享资源放在1台或多台NOVELL,WIN-NT(或在WIN9X对等网上所设定)的服务器上,应用程序及临时文件放在本地客户的机WIN9X环境下,在客户机上开发时将本机对这些服务器访问盘符预先映射成指定的F:(H:..)等。最后编译成.EXE文件生成安装系统安装到每台客户机上。
---- 实际应用中局域网内各客户机因本身盘符数量的原因,对这指定的1台或多台服务的映射盘符可能并不是开发机上的F:(H:)。这时麻烦来了,程序一运行,屏幕提示“‘定位数据库’—‘初始化临时表对象时发生错误。找不到F:…???.DBC’” 。如果整个应用软件有.DBC库表和各种自由表,又有许多表单组成,此时让用户去定位数据库或自由表在什么位置,简直是不可能的。
---- 笔者是这样解决这个问题的(大致方法如下):
---- 1. 建立一个包含文件:如info.h
#include DBCname1_loc drv1_loc+’\citicmis1.dbc’
;服务器1上的库1
#include DBCname2_loc drv2_loc+’\citicmis2.dbc’;
服务器2上的库2
#include DBCusrinf_loc drv1_loc+’\citicmis1!usrinf.dbf’
;库1中表
#include DBCEMP_loc drv2_loc+’\citicmis2!emp.dbf ‘ ;
库2中的表
#include dbcjgbh_loc drv1_loc+’\rsc\jgbh.dbf’;
库中表或自由表
---- 2. 在应用系统的某目录中建文本文件:如.\bmp\serdrv.txt, 内有二行文本
F:\acc ;某客户机对第1台服务器的映射盘符
H:\acc ;某客户机对第2台服务器的映射盘符
---- 3. 在软件的主程序main.prg中 建全局变量 drv1_loc,drv2_loc,一开始就用低级文件操作命令fopen,fget等将serdev.txt中的二行 f:\acc,h:\acc分别读入并赋值给drv1_loc,drv2_loc。
---- 4. 应用软件中的表单或其他过程都包含info.h 文件。
---- 4.1 对于自由表:
---- 可在表单的LOAD 事件中 用如 use (dbcjgbh_loc) in 0 alia jgbh shar打开表,在UNLOAD事件中用 USE in jgbh 关闭表。
---- 4.2 对于数据库的表:
---- 可在表单设计时的数据环境中打开表(如打开了 usrinf.dbf,emp.dbf),此事 数据环境中的 Dataenvironmnet.cursor?.database属性 自动设定为所在的服务器的数据库,如本例为 f:\acc\citicmis1.dbc,h:\acc\citicmis2.dbc 。
---- 这时可以在Dataenvironmnet对象的 BeforeOpenTables 方法中写入如下代码:
---- This.Cursor1.database=DBCNAME1_LOC
---- This.Cursor2.database=DBCNAME2_LOC 就可解决问题。
---- 以上方法生成的.EXE系统,安装到各客户机上后,只要修改各客户机的.\bmp\serdrv.txt中为实际对服务器盘符指向就能使用应用系统运行自如了!用此方法开发的系统已在笔者所在系统各单位的WIN9X对WIN9X,WIN9X对NOVELL服务器,VFP6.0环境中运行着!
---- 实际应用中局域网内各客户机因本身盘符数量的原因,对这指定的1台或多台服务的映射盘符可能并不是开发机上的F:(H:)。这时麻烦来了,程序一运行,屏幕提示“‘定位数据库’—‘初始化临时表对象时发生错误。找不到F:…???.DBC’” 。如果整个应用软件有.DBC库表和各种自由表,又有许多表单组成,此时让用户去定位数据库或自由表在什么位置,简直是不可能的。
---- 笔者是这样解决这个问题的(大致方法如下):
---- 1. 建立一个包含文件:如info.h
#include DBCname1_loc drv1_loc+’\citicmis1.dbc’
;服务器1上的库1
#include DBCname2_loc drv2_loc+’\citicmis2.dbc’;
服务器2上的库2
#include DBCusrinf_loc drv1_loc+’\citicmis1!usrinf.dbf’
;库1中表
#include DBCEMP_loc drv2_loc+’\citicmis2!emp.dbf ‘ ;
库2中的表
#include dbcjgbh_loc drv1_loc+’\rsc\jgbh.dbf’;
库中表或自由表
---- 2. 在应用系统的某目录中建文本文件:如.\bmp\serdrv.txt, 内有二行文本
F:\acc ;某客户机对第1台服务器的映射盘符
H:\acc ;某客户机对第2台服务器的映射盘符
---- 3. 在软件的主程序main.prg中 建全局变量 drv1_loc,drv2_loc,一开始就用低级文件操作命令fopen,fget等将serdev.txt中的二行 f:\acc,h:\acc分别读入并赋值给drv1_loc,drv2_loc。
---- 4. 应用软件中的表单或其他过程都包含info.h 文件。
---- 4.1 对于自由表:
---- 可在表单的LOAD 事件中 用如 use (dbcjgbh_loc) in 0 alia jgbh shar打开表,在UNLOAD事件中用 USE in jgbh 关闭表。
---- 4.2 对于数据库的表:
---- 可在表单设计时的数据环境中打开表(如打开了 usrinf.dbf,emp.dbf),此事 数据环境中的 Dataenvironmnet.cursor?.database属性 自动设定为所在的服务器的数据库,如本例为 f:\acc\citicmis1.dbc,h:\acc\citicmis2.dbc 。
---- 这时可以在Dataenvironmnet对象的 BeforeOpenTables 方法中写入如下代码:
---- This.Cursor1.database=DBCNAME1_LOC
---- This.Cursor2.database=DBCNAME2_LOC 就可解决问题。
---- 以上方法生成的.EXE系统,安装到各客户机上后,只要修改各客户机的.\bmp\serdrv.txt中为实际对服务器盘符指向就能使用应用系统运行自如了!用此方法开发的系统已在笔者所在系统各单位的WIN9X对WIN9X,WIN9X对NOVELL服务器,VFP6.0环境中运行着!
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式