Database 版 (精华区)
发信人: joy ( 雨送黄昏花易落), 信区: Database
标 题: pb应用程序举例
发信站: 紫 丁 香 (Mon Jul 27 10:34:54 1998), 转信
程序段01
建立事务对象并设置事务对象参数,该程序段常用于应用对象Open脚本
Transaction SQLServerTrans //说明SQL Server的事务对象
SQLCA.DBMS="OR6" //设置数据库为ORACLE V6
SQLCA.Logid="scott" //设置用户名为"scott"
DQLCA.Logpass="tiger" //设置口令为"tiger"
SQLCA.servername="T:scosysv:orac" //设置服务器名
CONNECT; //连接到数据库ORACLE6
SQLServerTrans TRANSACTION //创建SQL Server 事务对象
SQLServerTrans.DBMS="SYBASE" //设置数据库为SYBASE
SQLServerTrans.Logid="sa" //设置用户名为"sa"
SQLServerTrans.Logpass= //设置口令为空
SQLServerTrans.servername="SYBASE" //设置服务器名
CONNECT USING SQLServerTrans; //连接到数据库SYBASE
Insert into auths(author_clde) value('A00001') Using
SQLServerTrans; //插入到SYBASE 一条纪录
Insert into emp(ename) values('Smith'); //插入到oracle一条纪录
DISCONNECT; //断开到ORACLE的连接
DISCONNECT USING SQLServerTrans; //断开到SYBASE的连接
DBSTROY SQLServerTrans //清除事务对象 SQLServerTrans
程序段02
该程序段利用游标实现多个记录的模糊查询
string name
string V1 ='A%'
DECLARE C1 CURSOR FOR //定义光标,光标名为C1.
SELECT name FROM auths
WHERE author_code like : %V1;
OPEN C1; //打开光标,执行此光标对应的 SQL 语
lab1:
FETCH C1 INTO :name; //取记录
if SQLCA.SQLCode=0 then
if name="王达琳" then
delete from auths //删除"王达琳'这条记录
WHERE CURRENT OF C1;
end if
if name="冯兆鸣" then
update auths
set nationality='汉族' //修改"冯兆鸣"的民族
WHERE CURRENT OF C1;
end if
goto lab1 //如果成功取出记录,则取下一条
end if
程序段03
这段程序利用动态游标含参数查询多条记录并输出多个参数
string strvar
int intvar,i
string dstring
dstring="SELECT name, sex FROM auths"
DESCRIBE SQLSA FROM : dstring;
DECLARE C1 DYNAMIC CURSOR FOR SQLSA;
lab1:
FETCH C1 USING DESCRIPTOR SQLDA;
if SQLCA.SQLCode=0 then //若FETCH成功
for i=1 to SQLDA.NumOutputs
//SQLDA.NumOutPuts 含有输出参数个数
CHOOSE CASE SQLDA.OutparmType[i]
CASE TypeString!
strvar= GetDynamicString (SQLDA,i)
CASE TypeInteger!
intvar= GetDynamicNumber (SQLDA,i)
END CHOOSE
next
got lab1 //如果成功取出记录,则取下一条
end if
CLOSE C1;
程序段04
下面这段程序,查询指定分组中的指定项,若没有指定项,就出现提示信息,
若有,则高亮指定行。
boolean foundtag
long break
foundtag=FALSE
break=1
do while (not foundtag)
break=dw_1.FindGroupChange (break,1)
if break<=0 then exit //若没有分隔组或发生错误,则退出
//若在分隔组中发现指定的记录,就设foundtag 为 TRUE
if dw_1. GetItemString (break,"nativeplace_code")="003" &
then foundtag=TRUE
if break=dw_1.RowCount ( ) then exit
break=break+1
loop
if foundtag=FALSE then MessageBox ("提示信息","没有找到指定"&+"的籍贯码")
if foundtag=TRUE then
dw_1.SelectRow (break,TRUE)
dw_1.ScrollToRow (break)
end if
程序段05
这段程序查询所有无值的项,并提示用户输入信息
long row
int colnbr
string colname
row=1
colnbr=1
DO WHILE row <> 0
//若出错,就退出
if dw_1.FindRequired (primary!,row,colnbr,colname,TRUE) < 0 then
exit
end if
//若row非0,就是发现了无值的项,则显示提示信息
if row <> 0 then
MessageBox ("所需值丢失","在列"+colname +"和行" & + string (row))
//使光标移到需要输入值的项
dw_1. SetColumn (colnbr)
dw_1. ScrollToRow (row)
end if
LOOP
程序段06
下面这段程序写在窗口的Open事件上,找到当前的CPU及操作系统的信息,
其中ENV为environment变量类型
environment env
integer i
string os_type
i=getenvironment(env) //为environment变量env赋值
choose case env.cputype //找到系统cpu类型
case !286!
mle_1. text='286'
case !386!
mle_1. text='386'
case !486!
mle_1. text='486'
case pentium!
mle_1. text='Pentium'
case powerpc!
mle_1. text='PowerPC'
end choose
choose case env.ostype //找到系统操作系统类型
case macintosh!
os_trpe='Macintosh'
case Windows!
os_type='Windows'
case Windowsnt!
os_type='Windows NT'
end choose
mle_1.text=mle_1.text+"~r~n"+os_type //将cpu和操作系统类型写入多行
编辑器mle_1中
程序段07
这段程序用于窗口的存盘按钮的clicked事件处理脚本
int n
CONNECT;
dw_1.SetTransObject (SQLCA)
dw_2.SetTransObject (SQLCA)
n=dw_1.Update (TRUE,FALSE)
if n=1 then
n=dw_2.Update (TRUE,FALSE)
end if
if n=1 then
dw_1.ResetUpdate ( )
dw_2.ResetUpdate ( )
COMMIT;
else
ROLLBACK;
end if
程序段08
这段程序是将窗口的OLE 2.0 控制中的OLE对象存在文件中,可以作为窗口"另存
为"按钮的clicked事件处理程序
string pname, fname
GetFileSaveName ("保存文件",pname, fname, "ole", "OLE Files(*.ole),
*.ole,& DOC Files(*.doc),*.doc)
//显示标准 File SaveAs 窗口,定义缺省后缀为.doc
//并将选中的文件放在fname 中
ole.ole_1.SaveAs (fname)
//将特定.doc存储文件中的OLE对象放到窗口上的OLE 2.0控制上
程序段09
这段程序将窗口上的OLE 2.0 控制保存在创建的OLEStorage变量中
int n,i,m
olestorage sub1
olestorage stg_first
stg_first=CREATE OLEStorage
i=str_first.Open("c:xx.ole") //打开存储 stg_first
n=ole.ole_1.SaveAs(stg_first,"sub1")
程序段10
这段程序将源OLEStorage变量 stg_first保存在目标OLEStorage变量stg_second
的子存储sub1中
boolean exist
int result,i,m,n
string pname, fname
getfilesavename ("保存文件",pnme,fname,"ole","OLE Files(*.ole),
*.ole,& DOC Files(*.doc),*.doc)
stg_first=CREATE olestorage
stg_second=CREATE olestorage //创建两个存储
m=stg_second.open(fname) //打开存储stg_decond,fname 可以是一个
固定的文件名
i=stg_first.Open("c:xx.ole") //打开存储stg-first
resule=stg_first.SaveAs("sub1",stg_second)
stg_second.MemberExists("sub1",exist) //判断SaveAs函数是否运动成功
//如果成功就显示成功信息
if exist then messagebox("成功","父存储中存在sub1子存储。",Exclamation!) 程序段10
这段程序将源OLEStorage变量 stg_first保存在目标OLEStorage变量stg_second
的子存储sub1中
boolean exist
int result,i,m,n
string pname, fname
getfilesavename ("保存文件",pnme,fname,"ole","OLE Files(*.ole),
*.ole,& DOC Files(*.doc),*.doc)
stg_first=CREATE olestorage
stg_second=CREATE olestorage //创建两个存储
m=stg_second.open(fname) //打开存储stg_decond,fname 可以是一个
固定的文件名
i=stg_first.Open("c:xx.ole") //打开存储stg-first
resule=stg_first.SaveAs("sub1",stg_second)
stg_second.MemberExists("sub1",exist) //判断SaveAs函数是否运动成功
//如果成功就显示成功信息
if exist then messagebox("成功","父存储中存在sub1子存储。",Exclamation!)
程序段11
该段程序定义了func_validationtext ( )用户自定义函数,
该函数完成校验规则
func_validationtext(gettext( ))=0
//func-validationtext ( )为用户自定义函数
用户自定义函数func_validationtext( ) 的内容为(这是在"函数'画笔中编写的):
int k
select count(*) into : k from auths where author_code=:auth_code;
//auth_code为此函数传递参数
if len(trim(auth_code))<>4 or left(auth_code,1)<>"A" or k>0 then //校验规则
return 1 //如不符合校验规则,返回1
else
teturn 0 //如符合校验规则,返回0
end if
程序段12
这段程序是将数据库表"nativeplaces"中的值循环写入数据窗口列
"nativeplace_code"中
string code
string nativeplace
int i=1
declare cl cursor for
select native_place,nativeplace_code from
nativeplaces using SQLCA;
open c1;
fetch c1 into : nativeplace, : code;
DO WHILE sql.sqlcode=0
setvalue(dw_1,"nativeplace_code",+i,nativeplace+"~t"+code)
i=i+1
fetch c1 into : nativeplace,:code;
loop
close c1;
程序段13
这段程序用于数据存储处理,当存储出错时,提示出错信息,该程序段用于
"存盘"的clicked事件脚本
if update(dw_1, true,false)=1 then
if update(dw_2.,true,false)=1 then
dw_1.resetupdate ( )
dw_2.resetupdate ( )
commit;
dw_1.reset( )
dw_2.reset( )
else
rollback;
messagebox("错误信息","存盘失败")
end if
else
rollback;
messagebox("错误信息","存盘失败")
end if
程序段14
这段程序在数据窗口中定义了一个统计图,单击统计图形数据窗口时,
抽取鼠标单击到的切片,然后双击抽取的切片,得到抽取的百分比,
该程序段用于数据窗口的clicked的事件中
GetDataPieExplode()得到饼图中取出的切片所占的百分比
SetDataPixExplode()使这个切片离开饼图中心的距离。
integer series, datapoint
grObjectType clickedtye
integer percent
percent=60
clickedtype=dw_1. ObjectAtPointer("gr_1",series,datapoint)
//series为组号,datapoint存储点中的数据,gr_1为统计图对象名
IF (series>0 and datapoint>0) THEN
dw_1. SetDataPieExplode("gr_1",series,datapoint, percent)
//抽取点中的切片离开圆心的距离,为半径的60%
END IF
//在数据窗口中doubleclicked事件中脚本如下
integer series,datapoint
grObjectType clickedtype
integer percent
clickedtype=dw_1.ObjectAtPointer("gr_1",series,datapoint)
IF (series>0 and datapoint>0 ) THEN
// 得到切片被抽取的百公比后,显示这个百分比
dw_1.GetDataPieExplode("gr_1",series,datapoint,& percent)
MessageBox("切片抽取的百分比",dw_1.CategoryName("gr_1",datapoint) &
+"这个切片"+"被抽取了"+ String(percent)+"%")
END IF
程序段15
这段程序用在命令按钮上,用来得到DDE服务器数据
int return_value
string data
return_value=getremote("DDE通信",data,"my_appl",my_topic")
//"DDE通信"是数据在DDE服务器窗口的位置,这里指DDE服务器窗口内的一单行
//编辑器(如DDE服务器是Excel应用,dde_getremote_field可为"RIC2")
if return_value=1 then
//返回数据写入多行编辑器mle_1中
mle_1. text=("Getremote调用~r~n~r~n~r~n"+"="+data)
else
messagebox("getremote调用错误",String(return_value))
end if
程序段16
这段程序用于建立DDE通讯间的热连接
int return_value
return_value=starthotlink("DDE通信","my_appl","my_topic")
//my_appl 为DDE为服务器应用名,my_topic为DDE为服务器主题名
if return_value <> 1 then
messagebox("热连接失败",string(return_value))
return
end if
程序段17
这个程序段用来启动DDE服务器,常用于窗口的Open事件
if startserverdde("my_appl","my_topic","DDE通信")=1 then
mle_1.text=("DDE服务器启动!") rnd if
这个程序用来关闭DDE服务器,常用于窗口的 close 事件
stopserverdde("my_appl","my_topic")
程序段17
这个程序段用来启动DDE服务器,常用于窗口的Open事件
if startserverdde("my_appl","my_topic","DDE通信")=1 then
mle_1.text=("DDE服务器启动!") rnd if
这个程序用来关闭DDE服务器,常用于窗口的 close 事件
stopserverdde("my_appl","my_topic")
程序段18
这段程序用来响应客户应用程序的服务请求,用于窗口的remoteexec事件中
string data,appl,topic
getcommandddeorigin(appl)
getcommanddde(data)
mle_1.text=("已响应客户应用程序的请求,~r~n应用名="+appl+&
"~r~n 客户指令="+data)
respondremote(true)
程序段19
这段程序用于开始建立于客户的热连接,常用于窗口的remotehotelinkstart事件中
string item,appl,topic
getdataddeorigin(appl,topic,item)
mle_1.text=("已建立与客户的热连接,~r~n 应用名="+appl+"~r~n
主题名=& "+topic"~r~n DDE内容="+item)
respondremote(true)
程序段20
这段程序用于结束与客户的热连接,常用于窗口的remotehotelinkstop事件中
string item,appl,topic
beep(1)
getdataddeorigin(appl,topic,item)
mle_1.text=("与客户的热连接已被切断,~r~n应用名="+appl+"~r~n &
主题名= "+topic+"~r~n DDE内容="+item)
respondremote(true)
--
※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: 202.118.229.128]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:211.930毫秒