• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

转贴近::::如何在 VFP 中操作 AS/400 主机上的文件数据

发布: 2007-6-08 22:43 | 作者: seanhe | 来源: | 查看: 25次 | 进入软件测试论坛讨论

领测软件测试网
如何在 VFP 中操作 AS/400 主机上的文件数据
   IBM 的 AS/400 主机以其安全性、可靠性金融系统得到了广泛的应用。但是 AS/400 的大部分程序是采用 RPG 语言开发的,比较难于掌握。而微机上的 VFP 则以界面漂亮、简单易学而著称。是否可以在 VFP的界面中操作后台 AS/400 主机的数据?笔者为此进行了成功的测试,现将具体方法介绍如下。 
  首先,需要安装 IBM 的 Client Access for Windows 95,其中包含了IBM的 Client Access ODBC Driver (32-bit),对应的文件是 cwbodbc.dll。 

  第二步是增加ODBC数据源。在Windows 95 的控制面板中启动“ODBC 数据源(32位)”,在“驱动程序”页应能找到Client Access ODBC Driver (32-bit),在“用户DSN”页点“添加”按钮,然后输入以下内容: 

  在 General 页: 

  Data source name: 输入数据源名称,例如 MY400。
  System: 输入AS/400 系统名,如 ASSYSN1。
  User ID: 输入AS/400 的用户名,如 MLY。 

  在 Server 页: 

  Default: 输入 AS/400 缺省库名,如 QGPL。 

  其它设置可以采用系统缺省配置。 

  第三步是在 VFP 中建立远程视图。你可以新建一个项目 PRJ1,然后新建一个数据库 DBC1,用鼠标选择远程视图,然后点“新建”,在“选取”处点“可用的数据源”,在“可用的数据源”列表栏选择我们刚才增加的数据源MY400,然后点“确定”。之后添加 AS/400 上的表名(格式是 LIB.FILE),选择字段,设置联接条件、筛选条件、排序依据、分组依据、更新条件和杂项。 

  这里有两点需要特别注意:如果需要在视图进行增、删、修改记录后传递回AS/400主机的基表,首先必须在“更新条件”页设置关键字段和可更新字段标记;其次,如果某个字段允许输入汉字,则视图中该字段的属性定义中其宽度必须至少比 AS/400 中的定义小 2,否则更新时将出现错误 1526: 

  “连接错误: [IBM][Client Access ODBC Driver (32-bit)][DB2/400 SQL] Data truncated.”。全部设置完成后,按 Ctrl+W存盘,将远程视图取名为 VIEW1。 

  现在,你就可以象操作普通 .DBF 表一样操作远程视图 VIEW1了。用 USE打开 VIEW1,用 BROWSE 命令对记录数据进行增、删、修改。通过 Client Access 或 Telnet 登录 AS/400,你可以在主机上检查物理文件是否真的被更新。 

  通过远程视图,我们实现了对 AS/400 数据文件的透明操作,可以向AS/400发送复杂的查询条件,如果使用 OLE 自动化技术,还可以将数据加工后送往 Excel 进行报表输出打印。 

  下面给出一个完整的演示程序 ODBC.PRG,程序先请用户输入数据源名、AS/400 的表名、SQL SELECT 的字段(缺省是*表示所有字段)以及 WHERE 和ORDER BY 子句,然后程序就在 C:\TEMP 子目录下创建数据库 DBC1,并在其中建立远程视图 VIEW1,之后启动 BROWSE 界面让用户浏览从 AS/400 主机查询出的数据。程序在中文 VFP 3.0/5.0、中文 Windows 95/98 环境下均调试通过。 

* ODBC.PRG
* M.L.Y 2000.5

SET TALK OFF
SET SAFETY OFF
SET EXACT OFF
SET DATE ANSI
SET CENTURY ON
CLEAR ALL
CLEAR
_SCREEN.WINDOWSTATE = 2
_SCREEN.CAPTION = 
"Browse Data from AS/400"
MODIFY WINDOW SCREEN
NOCLOSE NOFLOAT NOGROW NOZOOM
IF MESSAGEBOX("
本程序演示通过 Client 
Access查看 AS/400 上的数据文件,"+;
   CHR(13)+CHR(13)+
"你需要先配置好 
Client Access ODBC 数据源"+;
   CHR(13)+CHR(13)+"
是否继续?", 1+32, "Browse 
Data from AS/400") < > 1
   RETURN
ENDIF
CNN = SPACE(30)
FLDS = '*'+SPACE(78)
TAB = SPACE(78)
COND = SPACE(78)
ORDERBY = SPACE(78)
@  2, 0 SAY '构造远程视图:'
@  4, 0 SAY 'ODBC DSN:' 
GET CNN
@  6, 0 SAY 'AS/400
LIB.file:' GET TAB
@  8, 0 SAY 'Fields:'
GET FLDS
@ 10, 0 SAY 'Where:'
GET COND
@ 12, 0 SAY 'Order 
by:' GET ORDERBY
READ
CLEAR
IF EMPTY(CNN) OR EMPTY(TAB)
   RETURN
ENDIF
IF EMPTY(FLDS)
   FLDS = '*'
ENDIF
FLDS = ALLTRIM(FLDS)
IF !EMPTY(COND)
   CND = 'WHERE '
+ ALLTRIM(COND)
ELSE
   CND = ''
ENDIF
IF !EMPTY(ORDERBY)
   ORD = 'ORDER BY '
+ ALLTRIM(ORDERBY)
ELSE
   ORD = ''
ENDIF
CLOSE ALL
IF ADIR(arr1, 
"C:\TEMP", "D") < > 1
   MD C:\TEMP
ENDIF
CD C:\TEMP
IF FILE('DBC1.DBC')
   DELETE DATABASE DBC1
ENDIF
CREATE DATABASE DBC1
*OPEN DATABASE DBC1
*CNNNAME = DBGETPROP
('VIEW1', 'VIEW', 'ConnectName')
*DROP VIEW VIEW1
CREATE SQL VIEW VIEW1
REMOTE CONNECT &CNN AS 
SELECT &FLDS FROM &TAB ;
   &CND &ORD
SELECT 0
USE VIEW1
KEYBOARD '{CTRL+F10}'
BROWSE NOMODIFY NODELETE
NOAPPEND NOMENU ;
   TITLE [查看AS/400数据
文件内容(FoxPro远程视图),
按Esc退出]
CLEAR ALL
RETURN

*** End of program.***

 metmay 回复于:2003-04-30 15:14:54
试了一下,总是报错:连接错误,找不到数据源,为什么?

 hanyu 回复于:2003-05-01 17:33:18
又好了

 metmay 回复于:2003-05-16 15:54:38
.com

 雪花啤酒 回复于:2003-09-25 07:16:51
发表于: 2003-03-13 12:03    发表主题: 转贴近::::如何在 VFP 中操作 AS/400 主机上的文件数据    

--------------------------------------------------------------------------------
 
如何在 VFP 中操作 AS/400 主机上的文件数据 
  IBM 的 AS/400 主机以其安全性、可靠性在金融系统得到了广泛的应用。但是 AS/400 的大部分程序是采用 RPG 语言开发的,比较难于掌握。而微机上的 VFP 则以界面漂亮、简单易学而著称。是否可以在 VFP的界面中操作后台 AS/400 主机的数据?笔者为此进行了成功的测试,现将具体方法介绍如下。 
  首先,需要安装 IBM 的 Client Access for Windows 95,其中包含了IBM的 Client Access ODBC Driver (32-bit),对应的文件是 cwbodbc.dll。 

  第二步是增加ODBC数据源。在Windows 95 的控制面板中启动“ODBC 数据源(32位)”,在“驱动程序”页应能找到Client Access ODBC Driver (32-bit),在“用户DSN”页点“添加”按钮,然后输入以下内容: 

  在 General 页: 

  Data source name: 输入数据源名称,例如 MY400。 
  System: 输入AS/400 系统名,如 ASSYSN1。 
  User ID: 输入AS/400 的用户名,如 MLY。 

  在 Server 页: 

  Default: 输入 AS/400 缺省库名,如 QGPL。 

  其它设置可以采用系统缺省配置。 

  第三步是在 VFP 中建立远程视图。你可以新建一个项目 PRJ1,然后新建一个数据库 DBC1,用鼠标选择远程视图,然后点“新建”,在“选取”处点“可用的数据源”,在“可用的数据源”列表栏选择我们刚才增加的数据源MY400,然后点“确定”。之后添加 AS/400 上的表名(格式是 LIB.FILE),选择字段,设置联接条件、筛选条件、排序依据、分组依据、更新条件和杂项。 

  这里有两点需要特别注意:如果需要在视图进行增、删、修改记录后传递回AS/400主机的基表,首先必须在“更新条件”页设置关键字段和可更新字段标记;其次,如果某个字段允许输入汉字,则视图中该字段的属性定义中其宽度必须至少比 AS/400 中的定义小 2,否则更新时将出现错误 1526: 

  “连接错误: [IBM][Client Access ODBC Driver (32-bit)][DB2/400 SQL] Data truncated.”。全部设置完成后,按 Ctrl+W存盘,将远程视图取名为 VIEW1。 

  现在,你就可以象操作普通 .DBF 表一样操作远程视图 VIEW1了。用 USE打开 VIEW1,用 BROWSE 命令对记录数据进行增、删、修改。通过 Client Access 或 Telnet 登录 AS/400,你可以在主机上检查物理文件是否真的被更新。 

  通过远程视图,我们实现了对 AS/400 数据文件的透明操作,可以向AS/400发送复杂的查询条件,如果使用 OLE 自动化技术,还可以将数据加工后送往 Excel 进行报表输出打印。 

  下面给出一个完整的演示程序 ODBC.PRG,程序先请用户输入数据源名、AS/400 的表名、SQL SELECT 的字段(缺省是*表示所有字段)以及 WHERE 和ORDER BY 子句,然后程序就在 C:\TEMP 子目录下创建数据库 DBC1,并在其中建立远程视图 VIEW1,之后启动 BROWSE 界面让用户浏览从 AS/400 主机查询出的数据。程序在中文 VFP 3.0/5.0、中文 Windows 95/98 环境下均调试通过。 

* ODBC.PRG 
* M.L.Y 2000.5 

SET TALK OFF 
SET SAFETY OFF 
SET EXACT OFF 
SET DATE ANSI 
SET CENTURY ON 
CLEAR ALL 
CLEAR 
_SCREEN.WINDOWSTATE = 2 
_SCREEN.CAPTION = 
"Browse Data from AS/400" 
MODIFY WINDOW SCREEN 
NOCLOSE NOFLOAT NOGROW NOZOOM 
IF MESSAGEBOX(" 
本程序演示通过 Client 
Access查看 AS/400 上的数据文件,"+; 
CHR(13)+CHR(13)+ 
"你需要先配置好 
Client Access ODBC 数据源"+; 
CHR(13)+CHR(13)+" 
是否继续?", 1+32, "Browse 
Data from AS/400") < > 1 
RETURN 
ENDIF 
CNN = SPACE(30) 
FLDS = '*'+SPACE(7 
TAB = SPACE(7 
COND = SPACE(7 
ORDERBY = SPACE(7 
@ 2, 0 SAY '构造远程视图:' 
@ 4, 0 SAY 'ODBC DSN:' 
GET CNN 
@ 6, 0 SAY 'AS/400 
LIB.file:' GET TAB 
@ 8, 0 SAY 'Fields:' 
GET FLDS 
@ 10, 0 SAY 'Where:' 
GET COND 
@ 12, 0 SAY 'Order 
by:' GET ORDERBY 
READ 
CLEAR 
IF EMPTY(CNN) OR EMPTY(TAB) 
RETURN 
ENDIF 
IF EMPTY(FLDS) 
FLDS = '*' 
ENDIF 
FLDS = ALLTRIM(FLDS) 
IF !EMPTY(COND) 
CND = 'WHERE ' 
+ ALLTRIM(COND) 
ELSE 
CND = '' 
ENDIF 
IF !EMPTY(ORDERBY) 
ORD = 'ORDER BY ' 
+ ALLTRIM(ORDERBY) 
ELSE 
ORD = '' 
ENDIF 
CLOSE ALL 
IF ADIR(arr1, 
"C:\TEMP", "D") < > 1 
MD C:\TEMP 
ENDIF 
CD C:\TEMP 
IF FILE('DBC1.DBC') 
DELETE DATABASE DBC1 
ENDIF 
CREATE DATABASE DBC1 
*OPEN DATABASE DBC1 
*CNNNAME = DBGETPROP 
('VIEW1', 'VIEW', 'ConnectName') 
*DROP VIEW VIEW1 
CREATE SQL VIEW VIEW1 
REMOTE CONNECT &CNN AS 
SELECT &FLDS FROM &TAB ; 
&CND &ORD 
SELECT 0 
USE VIEW1 
KEYBOARD '{CTRL+F10}' 
BROWSE NOMODIFY NODELETE 
NOAPPEND NOMENU ; 
TITLE [查看AS/400数据 
文件内容(FoxPro远程视图), 
按Esc退出] 
CLEAR ALL 
RETURN 

*** End of program.***


_________________
charlielou@21cn.com

 citicrc 回复于:2005-04-20 15:45:11
呵呵,晕啊,良友大哥几年前的文章给贴这里来了

 citicrc 回复于:2005-04-20 16:02:29
实际上用新的版本的CLIENT ACCESS,直接在可视化条件下,就可以做可更新视图,只要你的用户为可更新权限,是没有问题的.不过不建议使用视图方式,那个基于DBC,有坏表的可能,安全也不好,最好是用8和9版本后的Cursor adaptor来建立连接

 戎马 回复于:2005-04-21 09:13:54
天啊,charlielou,江底的一条大鱼翻上来了。

 michael9406 回复于:2005-04-21 10:04:59
那也只是引用。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网