我用pb11.5做了一個WEBservice,完成客戶端查詢某個DW的功能,如果通過ds2.create(dwsyntax,ls_error),則可以成功,并且能回傳資料,但是如果我用ds2.dataobject='d_aa' 的方式則不同的環境結果不樣。
我本地安裝了pb11.5的,webservice部署在本地,則能提取到資料;如果服務部署到其他機器,而且其他機器安裝pb11.5的環境,但是沒有安裝pb11.5,則第一種能成功,第2種失敗。
1、 ds2.create(dwsyntax,ls_error)
ds2.settransobject(sqlca)
i=ds2.retrieve()
if i=-1 then
msg="提取失敗"
end if
2、
ds2.dataobject='d_aa'
ds2.settransobject(sqlca)
i=ds2.retrieve()
if i=-1 then
msg="提取失敗"
end if
我感覺是應該是環境出了問題,但是我在服務器上已經將我知道的相關的DLL檔案都拷貝到bin目錄下了。
uj5u.com熱心網友回復:
你這代碼和webservice有什么關系?應該不是這方面的問題吧uj5u.com熱心網友回復:
經過除錯,很明顯得到結果:ds2.dataobject='d_aa' 這段陳述句實際上沒有成功。不知道為什么。而且本地部署的話可以成功,部署到其他機器上就不成功了。uj5u.com熱心網友回復:
你的ws有幾個pbl?遍歷一下列出它所有的資料視窗物件uj5u.com熱心網友回復:
就一個PBL,難道DW需要單獨一個PBL么?uj5u.com熱心網友回復:
我的意思是,僅就你給出的代碼來看,ds2.dataobject='d_aa'成功或不成功,和是不是webservice應該沒關系,你還是關注下你的這個'd_aa'存不存在吧。pb8也是這個意思,所以讓你遍歷所有的資料視窗物件uj5u.com熱心網友回復:
存在的,這個很確定,畢竟我是測驗的,里面也沒有多少東西。而且本地部署能成功,那么肯定是存在的,否則也retrieve出來。但是部署到其他機器后,就沒有能成功了,所以我猜想是某個DLL或者環境沒有能齊全導致。 我的機器與其他機器的差別就是一個pb環境的問題。share下的所有DLL我都拷貝了,還是不行,非常奇怪。uj5u.com熱心網友回復:
而且就一個pbl,不會存在忘記拷貝某個pbd的問題uj5u.com熱心網友回復:
如果你要用 ds2.dataobject='d_aa'需要創建一個PBR資源檔案,內容如下:
aa.pbl(d_aa)
然后再在專案檔案中加入資源檔案后再編譯。
uj5u.com熱心網友回復:
我來回答你的問題,但我也沒找到太好的解決辦法,可以共同探討,是因為你的d_aa的資料源是pb11.5產生的,使用getsqlselect( )可以看下,回傳來的sql陳述句是select "tablea"."columna" from "tablea"的格式,如果你將其中引號去掉,再執行肯定可以成功了。uj5u.com熱心網友回復:
唉,剛才遇到這個問題,已經解決了。看是不是少了個 pbdwe90.dll 檔案。。。
uj5u.com熱心網友回復:
PB的webservice 需要用到.net的環境 你.net的環境問題uj5u.com熱心網友回復:
應該是對應的 PBD 檔案沒有復制到服務器的發布目錄下的 xxx_root/file/.. 檔案夾中,在本機的發布目錄下搜索一下 PBD 檔案便可找到。轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/46573.html
標籤:Web 應用
上一篇:第二天MySQL
