简单的存储过程 PB中怎么调用
以下面这个的 SQL SERVER里存储过程为例
@returnvaluechar(10)output)
as
insertintot_student(id,name,sex)
values(’100′,’procedure’,'1′)
select@returnvalue=‘aaa’
GO
调用方法如下:
Stringls_returnDECLARElogical_procedure_namePROCEDUREFORsp_insert
@returnvalue=:ls_returnOUTPUT;
executelogical_procedure_name;
fetchlogical_procedure_nameinto:ls_return;
closelogical_procedure_name;
pb如何调用函数
调用函数: 比如一个函数名:f_abc,参数:as_a, as_b
调用的时候直接写:f_abc(ls_a, ls_b)
ls_a,ls_b就是函数需要的参数了,然后你可以返回值,也不可以不返回,看你怎么设置的函数了.
几种常见的对话框在PB中是如何实现并调用的技巧。
非常实用!---- 1.颜色选择API封装对象nvo_ChooseColor---- 先创建一新非可视用户对象,并声明一局部结构ols_ChooseColor long lstructsize ulong hwndowner ulong hinstance long rgbresult blob lpcustcolors long flags long lcustdata long lpfnhook long lptemplatename 然后定义如下的私有实例变量: Private: Ols_ChooseColor istr_choosecolor long il_custominitcolors[16] blob{64} ibl_customcolors 再声明如下局部外部函数: function boolean ChooseColorA (ref os_choosecolor lpcc) library "comdlg32.dll" 在用户对象的构造事件中加入下述代码: //初始化结构实例变量,转换缺省的颜色数组到一BLOB变量中 blobedit(ibl_customcolors,1,il_custominitcolors) istr_choosecolor.lpcustcolors = ibl_customcolors //设置客户定义颜色的指针 istr_choosecolor.lstructsize = 36 //设置结构尺寸 setnull(istr_choosecolor.hwndowner) //设置父窗变量为空 istr_choosecolor.flags = 1 //设置标志 最后声明一公有用户对象函数: public function boolean of_choosecolor (ref long al_rgbresult) 在函数内加入下述代码: boolean lb_ok istr_choosecolor.rgbresult = al_rgbresult lb_ok = choosecolora (istr_choosecolor) al_rgbresult = istr_choosecolor.rgbresult return lb_ok 保存用户对象名为nvo_ChooseColor即可 使用方法:在需要处加入如下代码 long ll_customcolor nvo_ChooseColor nvo_cc nvo_cc = CREATE nvo_ChooseColor of_choosecolor(ll_customcolor) DESTROY nvo_cc ll_customcolor即含有用户选择的色值 ---- 2.目录选择API封装对象nvo_FolderBrowse---- 先创建一新非可视用户对象,并声明若干局部结构 结构一 ols_shitemid unsignedint cb character abid 结构二 ols_itemidlist shitemid mkid 结构三 ols_browseinfo unsignedlong howner unsignedlong pidlroot string pszdisplayname string lpsztitle unsignedint ulflags unsignedlong lpfn long lparam integer iimage 然后声明如下局部外部函数: Protected: Function unsignedlong SHGetPathFromIDListA ( unsignedlong pidl, ref string pszPath) Library 'shell32' Function unsignedlong SHBrowseForFolderA ( ols_browseinfo lpbrowseinfo ) Library 'shell32' Subroutine CoTaskMemFree(ulong idlist) Library 'ole32' 再声明如下实例变量: Protected: unsignedLong BIF_RETURNONLYFSDIRS = 1 声明一公有对象函数 public function string browseforfolder (window awi_parent, string as_caption) 并加入如下代码 ols_browseinfo lstr_bi ols_itemidlist lstr_idl unsignedlong ll_pidl, ll_r,ll_Null Integer li_pos String ls_Path SetNull( ll_Null ) lstr_bi.hOwner = Handle( awi_Parent ) lstr_bi.pidlRoot = 0 lstr_bi.lpszTitle = as_caption lstr_bi.ulFlags = bif_ReturnOnlyFSDirs lstr_bi.pszDisplayName = Space( 255 ) lstr_bi.lpfn = ll_Null ll_pidl = SHBrowseForFolderA( lstr_bi ) ls_Path = Space( 255 ) ll_R = SHGetPathFromIDListA( ll_pidl, ls_Path ) CoTaskMemFree( ll_pidl ) RETURN ls_Path 保存对象名为nvo_FolderBrowse即可 使用方法:在需要处加入如下代码 nvo_FolderBrowse nvo_fb String ls_path nvo_fb=CREATE nvo_FolderBrowse ls_path = nvo_fb.BrowseForFolder ( handle(parent), '请选择目标路径' ) DESTROY nvo_fb ls_path是用户选择的目录路径 ---- 3.打印机属性设置对话框API封装对象nvo_PrinterSetup---- 先创建一新的非可视用户对象,然后声明如下局部外部函数: function boolean OpenPrinterA (ref string pPrinterName,ref ulong phPrinter,ref ulong pDefault ) library "winspool.drv" function boolean PrinterProperties (ulong hwnd1,ulong hPrinter) library "winspool.drv" function boolean ClosePrinter (ulong hPrinter) library "winspool.drv" 最后声明一公有的用户对象函数: public function boolean of_printersetup (string printername,window awin) 加入下述代码: ulong hwnd //父窗口句柄 ulong prnhd //打印机设备句柄 ulong l=0 hwnd=handle(awin) if openprintera(printername,prnhd,l) =false then return false PrinterProperties(hwnd,prnhd) closeprinter(prnhd) return true 将对象另存为nvo_PrinterSetup即可 使用方法:在需要处加入如下代码(假定为一按钮的点击事件) nvo_PrinterSetup nvo_ps window win win = parent nvo_ps = CREATE nvo_PrinterSetup if not of_printersetup(prnname,win) then messagebox("提示","打开打印机失败!") DESTROY nvo_ps ---- 注:printername是目标打印机名,可用系统当前打印机也可用别的已安装的打印机。通常是从下拉列表控件中获得
如何在Pb里调用Webservice
1.把c:\program
files\sybase\shared\powerbuilder下面的pbsoapclient90.pbd加入target.
2.创建web service代理
点:File->News->Project->Web service Proxy
Wizrd
下一步会提示你输入WSDL文件,点击浏览选择webservice服务器端提供的wsdl接口文档,比如(附档wsdl.rar):
http://172.18.60.39:8080/person/wsdl
点击下一步,会自动出现WSDL文件中的Service.点击下一步,系统默认选择ServiceSoap,紧接着输入proxy name(代理对象名)前缀,输入My.后面的几项按默认即可。
完成后是编译代理对象的界面。会出现:
Web Service Generator Project Status
Deployment PBL:
E:\whz\PBWebService\pb9\smsweb.pbl
Clear PBL on build: No
Confirm
overwrites: No
WSDL Location:
http://172.18.60.39:8080/person/wsdl
Services selected :
Service
Service:
PersonPort
点击编译的绿色图标,一个代理对象(mypersonport)生成了。
3.增加一个窗口放一个按钮,调用代码样例:
SoapConnection lsc_conn
mypersonport
lproxy_obj
String ls_proxy_name = "mypersonport"//生成的代理对象名称
String
ls_url =
"http://172.18.60.39:8080/person/api"//这个url从wsdl接口文档<service>节点可以找到
int
li_ret, i
try
lsc_conn = Create SoapConnection
//lsc_conn.SetOptions("SoapLog=~"soaplog.txt~"")
li_ret =
lsc_conn.Createinstance(lproxy_obj,ls_proxy_name,ls_url)
If li_ret
<> 0 Then
MessageBox("错误", "调用失败,错误代码:" + String(li_ret))
Return
End If
i = lproxy_obj.add("1")
MessageBox("Web Service", "调用成功:" + String(i))
catch (SoapException
e1)
MessageBox("错误", "不能调用函数,错误信息:" + e1.GetMessage())
catch
(PBXRuntimeError e2)
MessageBox("错误", "调用函数运行时错误." )
catch
(RuntimeError e3)
MessageBox("错误", "调用函数不可知错误." )
end try
转载仅供参考,版权属于原作者。祝你愉快,满意请采纳哦