Database 版 (精华区)

发信人: joy ( 雨送黄昏花易落), 信区: Database
标  题: pb应用程序举例(2)
发信站: 紫 丁 香 (Mon Jul 27 10:44:29 1998), 转信

程序段21
这段程序用于客户的DDE请求服务,常用于窗口的remoterequest事件中

string data,appl,topic
getdataddeorigin(appl,topic,data)
mle_1.text=("响应与客户的热连接,~r~n 应用名="+appl+"~r~n 
             主题名=&"+topic+"~r~n 客户请求="+data)
data=sle_1.text
setdatadde(data)
程序段21
这段程序用于客户的DDE请求服务,常用于窗口的remoterequest事件中

string data,appl,topic
getdataddeorigin(appl,topic,data)
mle_1.text=("响应与客户的热连接,~r~n 应用名="+appl+"~r~n 
             主题名=&"+topic+"~r~n 客户请求="+data)
data=sle_1.text
setdatadde(data)
程序段22
这段程序用于DDE服务向客户发送数据。

int return_value
string data,item
data=sle_1.text
int flag
//给 DDE 客户返回值
lab:
return_value=setdatadde(data,"my_appl","ny_topic","DDE通信")
//服务器向客户发送数据
if return_value=-2 then 
    flag=messageBox("提示信息","数据没接受",information!,YesNo!)
    if flag=1 then
       goto lab;
     else
       return
     end if
end if
程序段23
该窗口用于DDE服务器应用的应用名,主题和内容,常用于hotlinkalarm事件中

string data,appl,tpic,item
getdataddeorigin(appl,tpic,item)
getdatadde(data)
respondremote(true)
mle_1.text=("热连接已启动,~r~n 应用名="+appl+"~r~n 主题名=
"+topic+&"~r~n DDE 内容="+item+"~r~取得服务器数据="+data)
程序段24
这段程序用于建立热连接,常用于按键的clicked事件中

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
程序段25
这段程序用于开始断开与客户的热连接,常用于按键的clicked事件中

int return_value
return_value=stophotlink("DDE通信","my_appl","my_topic")
if return_value <> 1 then
messagebox("关闭热连接失败","Error code="+string(return_value))
return
end if
程序段26
这段程序向服务器发送指令,常用于按键的clicked事件中

int return_value
string data
//通知服务器执行一个命令
return_value=execremote(xle_1.text,"my_appl","my_topic")
if return_value <> 1 then
    messagebox("esecremote()函数招待行出",string(return_value))
10:32 98-7-27程序段27
这段程序用于获得服务器的数据,常用于按键的clicked事件中

int return_value
string data
return_value=getremote("DDE 通信",data,"my_appl","my_topic")
//"DDE通信为数据在DDE服务器窗口的位置,"my_topic"为服务器的主题
if return_value=1 then
  mle_1.text=("Getremote 调用~r~n~r~n~r~n"+"DDE通信"+"="data)
else
  messagebox("getremote调用错误",String(return_value))
end if
程序段28
这段程序用来启动当前应用的DDE服务器,并在多行编辑器中写入执行的状态,
常用于按键的clicked事件中

//开启服务器
string dde_appl,dde_topic,item
dde_appl="wy_appl"
dde_topic="my_topic"
item="连接项目"
if startserverdde(dde_appl,dde_topic,item)=1 then  //dde_appl为DDE名
mle_1.text="开启服务器成功"   //dde_topic为主题名
end if
程序段29
这段程序用来将pic1复制到blob变量,然后在下一位置复制pic2

blob(1500) pic1,pic2
blob picture
int fp
long n
fp=FileOpen("c:\pb4\f1.bmp",streammode!)
FileRead(fp,pic1)  //将文件f1.bmp中的图象数据读入变量pic1
fp=Fileopen("c:\pb4\f2.bmp",streammode!)
FileRead(fp,pic2)  //将文件f2.bmp中的图象数据读入变量pic2
n=BlobEdit(picture,1,pic1)
BlobEdit(picture,n,pic2)
程序段30
这段程序用于邮件收发,显示一个地址列表。

mailSession mSes
mailMessage mMsg
mailRecipient mRec
int mNbr
meilReturnCode mReturn
mSes=create meilSession
//邮件用户"bhy"注册
mReturn=mSes.mailLogon('bhy','PASSWORD',mailNewSession!)
if mReturn <> mailReturnSuccess! then
   MessageBox("MAIL LOGON",'MS MAIL LOGON AILURE!')
   Return
end if
//弹出邮件用户列表
mReturn=mSes.mailAdress()
if mReturn<>mailReturnSuccess! then
   MessageBox("Mail Address",'MS MAIL MIL ADDRESS FAILURE!')
    return
end if
mSes.mailLogoff( )
destroy mSes
程序段31
这段程序用于删除由mailGetMessages( ) 得到的第一条邮件的ID邮件信息

mailSession mSes
int mNbr
mailReturnCode mReturn
mSes=create mailSession
//邮件用户"ghy"注册
mReturn=mSes.mailLogon('ghy','PASSWORD',mailNewSession!)
if mReturn <> mailReturnSuccess! then
   MessageBox("MAIL LOGON","MS MAIL LOGON FAILURE!")
   Return
end if
//得到收到的所有邮件 ID
mReturn=mSes.mailGetMessages( )
if mReturn <> mailReturnSuccess! then
   MessageBox("Mail Get Message","MA MAIL MAIL"+"GET MESSAGE FAILURE!")
   return
end if
mNbr=Upperbound(mSes.MessageID[])
//删除第一条邮件
mSes.mailDeleteMessage(mSes.MessageID[1])
mSes.mailLogoff( )
destroy mSes
可以将mailGetMessages( )语句改为
mReturn=mSes.mailGetMessages(TRUE)
mNbr=Upperbound(mSes.MessagesID[])
则只能得到尚未读过的信息ID
程序段32
  这段程序用于列出最近收到邮件的ID号。

mailSession mSes
int mNbr
mailReturnCode mReturn
mSes=create mailSession
//邮件用户"ghy"注册
mReturn=mSes.mailLogon('ghy','PASSWORD',mailnewSession!)
if mReturn <> mailReturnSuccess! then
   MessageBox("MAIL LOGON","MA MAIL LOGON FAILURE!')
   Return
end if
//得到收到的所有邮件 ID 号
mReturn=mSes.mailReturnSuccess! then
   MessageBox("Mail GetMessages",'MA MAIL GET'+'MESSAGES FAILURE!')
   Return
end if
mNbr=Upperbound(mSes.MessageID[])
sle_1.text=string(mNbr)
mSes.mailLogoff( )
destroy mSes
程序段33
  下面这段程序在多行编辑器中显示邮件用户ghy接收到的且尚未读
过的邮件信息的某一条。

mailSession mSes
mailMessage mMsg
int mNbr
mailReturnCode mReturn
mSes=create mailSession
//邮件用户"ghy"注册
mReturn <> mailReturnSuccess! then
   MessageBox("MAIL LOGON",'MA MAIL LOGON FAILURE!')
   Return
end if
//得到"ghy"收到的但尚未读过的信息 ID
mReturn=mSes.mailGetMessages(TRUE)
if mReturn <> mailReturnSuccess! then
   MessageBox("Mail Get Message",'MA MAIL MAIL GET'+'MESSAGE FAILURE!')
   Return
end if
//得到"ghy"收到的但尚未读过的信息有多少个
mNbr=upperbound(mSes.MessageID[mNbe],mMsg, mailEntireMessage!,TRUE)
//把信息放在多行编辑器 mle_1 中
mle_1.text=mMsg.NoteText
mSes.mailLogoff( )
destroy mSes
程序段34
  这段程序用来显示邮件用户ghy的详细信息,并允许编辑。

mailSession mSes
mailMessage mMsg
mailRecipient mRec
int mNbr
mailReturnCode mReturn
mSes=create mailSession
//邮件用户"ghy"
mReturn=mSes.mailLogon('ghy','PASSWORD',mailNewSession!)
if mReturn <> mailReturnSuccess! then
   MessageBox("MAIL LOGON",'MA MAIL LOGON FAILURE!')
   Return
end if
//得到"ghy"的一些信息
mReturn=mSes.mailResolveRecipient(mRec)
if mReturn <> mailReturnSuccess! then
   MessageBOx("mail ResolveRecipient",'MA MAIL'+'RESOLE
                RECipIENT FAILURE!')
   Return
end if
//在窗口显示"ghy"的详细信息,并充许修改之
mReturn=mSes.mailRecipientDetails(mRec,TRUE)
if mReturn <> mailReturnSrccess! then
   MessageBox("Mail RecipentDetails",'MS MAIL'+'RECIPIENT'+ &
                     +' DETAILS FAILURE!')
   Return
end if
mSes.mailLogoff( )
destroy mSes
程序段35
  这段程序用于得到邮件用户ghy的详细信息。

mailSession mSes
mailMessage mMsg
mailRecipient mRec
int mNbr
mailReturnCode mReturn
mSes=create mailSession
//邮件用户名为"ghy"
mRec.Name='ghy'
//注册
mReturn=mSes.mailLogon('ghy','PASSWORD',mailNewSession!)
if mReturn <> mailReturnSuccess! then
   MessageBox("MAIL LOGON",'MA MAIL LOGON FAILURE!')
   Return
end if
//得到"ghy"的详细信息
mReturn=mSes.mailResolveRecipient(mRec)
if mReturn <> mailReturnSuccess! then
   MessageBox("Mail ResolveRecipient",'MS MAIL'+'RESOLVE'+&
              +'RECIPIENT FAILURE!')
   Return
end if
mReturn=mSes.mailRecipientDetails(mRec,TRUE)
if mReturn <> mailReturnSuccess! then
   MessageBox("Mail RecipientDetails",'MS MAIL'+'RECIPIEN'+&
                 +'DETAILS FAILURE!')
   Return
end if
mSes.mailLogoff( )
destroy mSes
程序段36
  该程序用Enter键来进行窗口上的各个控键的焦点转跳,
常用于窗口的Key事件中

int sv_sign
graphicobject gb
gb=getfocus( )  //得到当前焦点所在的控制
if keydown(keyenter!) then  //如按下 Enter 键
   if sv_sign=1 then
       sv_sign=0
       return
   end if
   post(handle(gb),256,9,0)   //发一个 Tab 命令
   sv_sign=1
end if
程序段37
  这段程序用来打开OLEStorage中的流,并将它赋给OLEStream对象,
然后计算流的长度。

olestorage stg_first
stg_first=create olestorage
long strlen
int i
olestream olestrl
olestrl=CREATE olestream
olestrl.open(stg_first,"strl",stgRead!,stgDenyNone!)
i=olestrl.Lenth(strlen)
程序段38
  这段程序判断存储是否在指定的子存储,若存在就删除它的名称,然后
再存回去。

int i
boolean exist
stg_first.MemberExists("subl",exist)
if exist then
i=stg_first.MemberDelete("subl")
if i=0 then stg_first.Save( )  //若删除成功,就存回 OLE 存储并显示信息
end if
程序段39
  这段程序定义了一个事物对象,并用ProfileString函数引入XPB.INI中的
参数,它常用于应用的Open脚本。

//创建一个事务对象,Sybase 是一个已经定义好的事物类型
SybaseTrans.DBMS=ProfileString("XPB.INI","Database","DBMS", " ")
SybaseTrans.Database=ProfileString("XPB.INI","Database","Database",  " ")
SybaseTrans.LogID=PtofileString("XPB.INI","Database","LogID",   " ")
SybaseTrans.LogPass=PtofileString("XPB.INI","Database","LogPass",  " ")
SybaseTrans.ServerName=ProfileString("XPB.INI","Database","ServerName",  " ")
SybaseTrans.UserID=profileString("XPB.INI","Database","userID",    " ")
SybaseTrans.DBPass=profileString("XPB.INI","Database","DBPass",    " ")
SybaseTrans.lock=profileString("XPB.INI","Database","Lock",   " ")
SybaseTrans.DBParm=ProfileString("XPB.INI","Database","DBParm",   " ")
connect using sybasetrans;
open(win_pl)
//打开应用的主窗口
程序段40
  这段程序用来启动数据管道,并提示数据管道执行过程中的信息,
常用于按钮的clicked事件中。

int result
u_pipe i_upipe
//这句话也可以定义在窗口的 instance 变量编辑框中
i_upipe=CREATE u_pipe
//创建用户对象 u_pipe 的实例 i_upipe
i_upipe.dataobject="p_pipe"
//将前面做好的 pipeline 对象赋给 i_upipe 的 dataobject 属性
result=i_upipe.Start(sqlca,sybasetrans,dw_1)
//根据 Start 函数的返回值显示信息
choose case result
   case 1
      reset(dw_1)
//若传输数据成功,就清除 pipeline-error 数据窗口
      messagebox("提示信息","特定的表已被灌进特定的数据库。")
   case -1
      messagebox("出错","pipe不能被打开。",stopsign!)
//一般发生这种错误是因为没有连接源或目标数据库
   case -3
      messagebox("出错","表示目标数据库已存在。",stopsign!)
   case -4
      messagebox("出错","源数据库中不存在指定表。",stopsign!)
   case -6
      messagebox("出错","错误的参数。",stopsign!)
   case -10
      messagebox("出错","超过最大错误数。",stopsign!)
   case -16
      messagebox("出错","源数据库出错。",stopsign!)
   case -17
      messagebox("出错","目的数据库出错。",stopsign!)
end choose


--
※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: 202.118.229.128]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:214.077毫秒