在学习和使用PB时候所进行的知识总结

2026/1/15 0:34:27

此动态sql使用了动态描述区对象变量,通过该对象变量的四个属性,

Numinputs,Inparmtype,Numoutputs,outparmtype 我们能够得到输入参数个数,输入参数类型,输出参数个数,输出参数类型信息。其中,inparmtype是个数组,每个元素对应SQL中的一个问号;

可以利用setdynamicparm()具体设置输入的参数值。

(**注:在此语法中,除了declare 语句外,都要检查事务对象的SQLCODE属性,以判断当前sql语句的执行是否成功。**通过多次调用fetch语句,能够读取多条数据,每读出一条数据后,通常在循环语句中使用choose case 确定输出参数的类型后再用相应的函数得到其值。

如:String stringvar,sqlstatement int intvar sqlstatement=\ PREPARE SQLSA FROM :sqlstatement; DESCIRBE SQLSA TNTO SQLDA;

DECLARE my_cursor DYNAMIC CURSOR FOR SQLSA; OPEN DYNAMIC my_cursor DESCRIPTOR SQLDA; FETCH my_cursor USING DESCRIPTOR SQLDA;

//当FETCH语句执行成功时,动态描述区sqlda 中包含了结果集的第一行数据,反复执行fetch可得其它数据。

//SQLDA.NUMoutputs中包含了输出参数的个数。 sqlda.outparmtype数据中包含了各个参数的数据类型。

choose case sqlda.outparmtype[1] case typestring!

stringvar=getdynamicstring(sqlda,1)

case typedecimal!,typedoble!,typeinteger!,typelong!,typereal!,typeboolean!

doublevar=sqlda.getdynamicnumber(1) case typedate!

datevar=sqlda.getdynamicdate(1) case typetime!

timevar=sqlda.getdynamictime(1) end choose

CLOSE my_cursor;

*************************************************************

动态描述区(DynamicDescriptionArea) //在动态SQL语句的第四种语法格式中,PB使用此类型的变量存储有关的输入和输入出的参数的信息。

//对于每一个应有程序来说,PB都提供了一个dynamicdescriptionarea类型的全局变量,名称为:SQLDA

属性: 类型 意义描述

Numinputs INTeger 输入参数的个数。输入参数在动态sql prepare 语句中说明。当执行了descibe 语句后,pb将填充该属性的值。 numoutputs integer 输出参数的个数。输出参数在动态sql prepare 语句中说明。如果数据库管理系统支持输出参数,则执行了descibe 语句后,pb将填充该属性的值。否则,在执行了fetch语句后填充。

inparmtype[] parmtype 一个数组,指示每个输入参数的类型。有效值为:

TypeBollean!,typedata!,typedatetime!,typedatedecimal!,typedouble!,typeinteger!,typelong!,typereal!,typestring!,typetime!,typeuint!,typeulong!,typeunknown.

outparmtype[] parmtype 一个数组,指示每个输出参数的类型,同上。

*********

事件:constructor //在创建该对象时触发 destructor //在删除时触发 ***********函数

1.Dynamicdescriptionarea.getdynamicdate(index) //功能:在应用程序执行了动态sql语句后,使用该函数得到data类型输出参数的数据值。

dynamicdescrptionarea:动态描述区对象名,通常用sqlda index:int类型,指明要得到第几个输出参数的值。(其值不能超过动态描述区对象numoutputs属性的值)

返回值:date.成功时返回index参数指示的输出参数的数据值。错误时返回:1900-01-01

如: for n=1 to sqlda.numoutputs

choose case slqca.outparmtype[n]

stringvar=sqlda.getdynamicstring(n)

case typedecimal!,typedoble!,typeinteger!,typelong!,typereal!,typeboolean!

doublevar=sqlda.getdynamicnumber(n) case typedate!

datevar=sqlda.getdynamicdate(n) case typetime!

timevar=sqlda.getdynamictime(n) case else

messagebox(\不知道是什么数据类型呀\ end choose next

2.sqlda.setdynamicparm(index,value)

//功能:设置动态描述区对象输入参数的值,这些参数将在sql open或sql execute语句中使用。

index:int类型,指明要设置第几个输入参数的值,(其值不能超过动态描述区对象numinputs属性的值) Value:要设置的输入参数的值 返回值: 成功时,1 失败为:-1 如: sqlda.setdynamicparm(1,\北京\将sqlda的第一个参数设置为\北京\

********************************************************************************************8

********************************************************************************************************

libarayexport(librayname,objectname,objecttype)

//功能:从指定应用库中以对象对象的语法定义格式卸出对象。 librayname:string 类型,指定要移出对象的应用库的名称。

objectname:string 类型,指定要移出对象的名称。 objecttype:枚举型。有:exportapplication!,exportdatawindow!,exportfunction!,exportmenu!,exportpipeline!,exportquery!,exportstructure!,exportuserobject!,exportwindow!

返回值:string,发生错误返回\如: string ls_dwsyn,ls_errors

ls_dwsyn=libraryexport(\ dw_1.create(ls_dwsn,ls_errors) //移出d_emp数据窗口的定义,然后在数据窗口控件中创建数据窗口对象。 ***********************

libraryimport(libraryname,objectname,objecttype,syntax,errors{,comments})

//功能:将以语法格式表示的数据数据窗口对象装入到指定的应用库。 librayname:string 类型,指定要移出对象的应用库的名称。objectname:string类型,指定要移入的数据窗口的名称。

objecttype:Importdatawindow!。syntax:string类型,指定要移入数据窗口对象的语法。

errors:string类型,用于在发生错误时保存出错信息。comments:string类型,用于指定移入库的注解。

返回值:int, 成功 为1,错误时为-1。

(*当应用程序在运行过程中动态创建数据窗口对象后,可能使用

liabrayimport()把动态数据窗口的定义保存到应用库中。以后可直接使用该对象了。

如:string dwsysntax,errorbuffer integer rtncode

dwsyntax=dw_1.describe(\

rtncode=librayimport(\wsyntax,errorbuffer)

*************************************************************************

*8888888888888888888888888888888888888888888888888888888888888888888888888

动态创建数据窗口

dw1.create(syntax,{errorbuffer})

//功能:用于动态地创建一个数据窗口。

dw1:表示要放入的数据窗口控件的名字。syntax:是一个字符串类型的变量,表示用来创建数据窗口对象源代码语法。errobuffer:string类型,用来表示错误信息存储的字符串变量名。 返回值:1 成功, -1 失败。

transaction.syntaxfromsql(sqlselect,presentation,err)

//功能:从一个sql select语句和指定数据窗口表现风格来生成数据窗口语法

transaction表示当前连接使用的事务对象名,一般为:SQLCA; sqlselect:string类型,用来生成数据窗口语法的sql select语句;presentation:string类型,用来指定数据窗口的表现风格。err:string类型,用来指定当前出错时错误信息的存放处。

如:string ls_sql,ls_syntax,ls_error_syntaxfromsql,ls_error_create ls_sql=\address.salary>4500\

ls_syntax=sqlca.syntaxfromsql(ls_sql,\_syntaxfromsql)

if len(ls_error_syntaxfromsql)>0 then

messagebox(\ else

dw_1.create(ls_syntax,ls_error_create) if len(ls_error_create)>0 then

messagebox(\ end if end if

dw_1.settransobject(sqlca) dw_1.retrieve()

*********************************************************************

******************************************* dw1.setvalidate(column,text)

///修改数据窗口控件指定列的有效性规则。

column:可为列名,也可用列号。 rule:string类型,其值是评价数据是否有效的有效性规则。

返回值:1 成功,-1 错误。(*当用户输入的值不满足该列的有效性规则时,将触发itemerror事件。如果有效规则中包含了数值,那么数据窗口要求这些数值使用美国格式。

如果要得到当前列的使用的有效规则,可使用:getvalidate(),如得到用户刚刚输入的值,可用gettext().

如:dw1.setvalidate(dw1.getcolumn(),\//把数据窗口的当前列的值限制到必须>0

如:dw1.setvalidate(dw1.getcolumn(),\把保障了用户输入的值<同一行上full_price列的值。 如:string

rule1,rule2=\w1.setvalidate(6,rule2) ************************* dw1.getvalue(column,index)

//功能:得到数据窗口指定列的值表或代码表中指定项的值。

column:得到所需值的列。 index:值表或代码表中数据项的索引号。


在学习和使用PB时候所进行的知识总结.doc 将本文的Word文档下载到电脑
搜索更多关于: 在学习和使用PB时候所进行的知识总结 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219