分類: PowerBuilder2009-01-13 09:19 1844人閱讀 評論(9) 收藏 舉報
PowerBuilder 11.5在千呼萬喚中終於出來了,看來Sybase公司為此確實花了不少力氣,增加了不少對WebService方面的支持,
特別是增加了以WebService為數據源的DataWindow,最近我用Xfire寫了一個WebService,以它為數據源做了一個DataWindow。
第一步,如下圖,選擇Web Service數據源:
第二步,如下圖,輸入WebService的WSDL文件的地址:
第三步,如下圖,選擇WebService接口:
第四步,如下圖,選擇WebService的接口方法:
第五步,如下圖,選擇你要生成DataWindow的WebService的返回結果:
第六步,如下圖,Finish即可:
通過以上六步就生成了如下DataWindow:
但是在生成過程中我卻發現一個百思不得其解的問題,對於Java中的數值型結果,PowerBuilder都會生成一個
System.Boolean ksdmSpecified ,ksdm是字段名。而對於String型則無此問題,真是搞不懂,是不是PowerBuilder對Java的支持不
夠好呢?但是Xfire生成的WebService都是標准WebService呀。
對於生成的DataWindow,只是在DataWindow中加入了以下代碼,並生成了一個Query.dll
webservice=webservice=(WSDL="http://localhost/hissq/services/Query?wsdl" assembly="Query.dll" namespace="WebService" classname="Query" method="GetKsdm" methoddefinition="<method name='GetKsdm' ns='WebService' pbname='GetKsdm'><return name='returnvalue' type='WebService.HisKsxx' isRef='False' ArrayDim='1' IsNullableType='False' /></method>" structurename="HisKsxx(System.int64 ksdm,System.Boolean ksdmSpecified ,System.String ksmc,System.String pydm)" inputparms="" resultsetparm=-1)
sort="ksdm A " )
接下來,生成以后,怎么更新與插入呢,PowerBuilder專門增加了對WebService的更新,如下圖:
一、更新設置:
請注意Use Original是使用初始值進行更新。
二、插入設置:
哈哈,一個WebService的DataWindow就全部設置完畢了。
查詢和更新操作就和普通DataWindow一樣了。
更新:
integer li_r
li_r = dw_1.update()
If li_r <0 Then messagebox("錯誤",is_error)
查詢,如果有參數也是和普通DataWindow一樣傳遞:
dw_1.retrieve()
對於WebService調用錯誤可以在DataWindow的事件wserror中取得,參數為errormessage。