- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PPB调用PB11的WEBSERVICE
PPB学习44-PPB调用PB11的WEBSERVICE??
首先先感谢Q群的深圳-谬谬,把这个问题解决了,我在此基础上做一个例程。
PB11可以向.NET上直接发布WEBSERVICE服务,下面我们就举个例子来看下如何实现这个过程。
以下是例程的工作环境:.net2005,PB11.2,PPB2.5,ASA9,IIS
数据库采用ASA9自带的SAMPLE数据库,准备工作,为SAMPLE数据库创建一个系统的DSN。如下图所示,命名为ASADEMO9。
这个DSN设成服务方式启动,如下图
IIS请检查WWW服务是否已经开启,默认网站是否已经启动,如果没有启动可以更改一下WWW端口试下,可能你的80端口被其他程序占用。如下图所示。
这一切准备好了,下面我们就开始先用PB11发布一个WEBSERVICE,在这个实例中,我要完成的是将一个SELECT的SQL语句做为参数,将这个SELECT语句的结果返回去。
打开PB11,NEW一个TARGET,在下面的对话框中选择.net web service,创建一个发布到.NET上的WEB SERVICE应用
下面是一个向导过程,第一页,NEXT,没啥要设置的。
第二页设置是新做一个还是使用一个已有库列表,这里我们选择新做一个。第一个选项,按NEXT
设置PROJECT的名字及PBL和PBT的文件路径,我命名为P_mywebservice,文件路径我就放在下面的目录,大家根据自己的需要放置。按NEXT
这一页是否要增加其他PBL,这里我们没有其他PBL加入,直接按NEXT
创建一个用户对象,取名n_mywebservice,如下图所示,按NEXT
这页是设置发布到.net上的目录,可以用默认值,如下图,按NEXT
添加其他资源文件和目录,这里我们就不填了,按NEXT
添加需要的动态库,在我们这个例子里也没有要添加的,按NEXT
设置输出,一个是生成SETUP文件,用于安装,另一个是直接发布到IIS上,我们选发布到IIS上,并且设定IIS的地址,包括端口号。由于我的WEB使用8080端口,所以我要加上:8080,按NEXT
确认所有属性值无误就可以完成向导的工作。按FINISH结束
在WORKSPACE里出现新的节点MYWEBSERVICE,下面已经创建了一个应用,一个PROJECT和一个用户对象。如下图所示。
下面我们打开n_mywebservice对象,对它进行编辑。创建两个函数,
一个函数名为CONNECTDB(连接数据库),输入参数为 transaction 类型atr_1,pass by为reference。输出为STRING
脚本:atr_1.DBMS = ODBCatr_1.AutoCommit = Falseatr_1.DBParm = ConnectString=DSN=asademo9;UID=DBA;PWD=SQLconnect using atr_1;if atr_1.sqlcode 0 then ?return? atr_1.sqlerrtextelse?return 1end if
再创建一个函数,getdata_for_sql(由SQL语句返回数据),输入参数为string类型 as_sql,输出为string
脚本:
string ls_ret,ls_data,error_sqllong ll_rowdatastore lds_1lds_1 = create datastore
transaction ltr_1ltr_1 = create transactionls_ret =? connectdb(ltr_1) if ls_ret = 1 then?ltr_1.autocommit=true?lds_1.create(syntaxfromsql(ltr_1,as_sql,style(type=grid),column(font.facename=arial,font.size=60)),error_sql))?ltr_1.autocommit=false?lds_1.settransobject(ltr_1)?ll_row = lds_1.retrieve()?if ll_row 0 then??ls_data = lds_1.describe(datawindow.data)??ls_ret = ls_data?else??ls_ret = error: no row return?end ifelse?ls_ret =? error: +ls_retend ifdisconnect using ltr_1;destroy ltr_1destroy lds_1return ls_ret完成后保
文档评论(0)