PB考试试题及答案.doc

上传人:飞****2 文档编号:52203493 上传时间:2022-10-21 格式:DOC 页数:7 大小:45.50KB
返回 下载 相关 举报
PB考试试题及答案.doc_第1页
第1页 / 共7页
PB考试试题及答案.doc_第2页
第2页 / 共7页
点击查看更多>>
资源描述

《PB考试试题及答案.doc》由会员分享,可在线阅读,更多相关《PB考试试题及答案.doc(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、PB考试试题 1、 什么是窗口或控件的消息队列 控件(包括窗口)都可以响应一系列的不同事件,当多个事件发生时,这些事件会根据触发先后或者触发方式(比如Trigger, Post)不一样,建立一个事件的消息队列来依次执行。PB中的消息队列和VC中的消息队列是一样的,只是VC中允许显式的处理,而PB则基本上自动处理了,不过也预留了二部分的接口,一是预定的一些方法名,如close(),open(),size()等,这些基本上对应了VC中的WM_CLOSE,WM_CREATE,WM_SIZE,而还有一类是要自定义的,方法就是在PB中新建一个事件,然后在事件ID列表中选择一个ID号,就可以处理相对应的事

2、件。2、窗口和控件的区别是什么? 窗口是应用程序与用户交流的主要界面,用它可以显示系统的有关信息,响应用户的鼠标和键盘输入等等;控件是对数据和方法的封装,它可以有自己的属性和方法。属性是控件数据的简单访问者;方法则是控件的一些简单而可见的功能。3、什么是上下文? 一种属性的有序序列,它们为驻留在环境内的对象定义环境。在对象的激活过程中创建上下文,对象被配置为要求某些自动服务,如同步、事务、实时激活、安全性等等。多个对象可以存留在一个上下文内。也有根据上下文理解意思的意思。上下文对象描述的是应用程序执行的上下文信息,包括当前版本、是否在PB环境内按window插件或ActiveX控件运行等。 使

3、用上下文信息,你可以修改显示信息和应用程序行为。4、什么是上下文服务? 是为上下文所标置的对象配置相应的同步、事务、实时激活、安全性等,并且为其提供一个相应的软件运行环境。5、在建表的时候忘了添加列的唯一性指定,后来发现错误了,想加上去,结果提示有一个两行是不唯一的,问如何知道是哪两行不唯一,使得出现错误? 对表的所有字段创建唯一索引,通过异常来获得含有相同值的rowid,然后关联原表来实现.生成测试表及测试数据。6、什么叫继承?PB的非可视对象能否实现继承? 继承就是面向对象中类与类之间的一种关系,继承的类称为子类,派生类,二被继承的类称之为父类、基类或超类。通过继承,使子类具有与父类相同的

4、方法与和属性,同时子类也可以加入新的属性和方法或者修改父类的属性和方法简历建立新的类层次。PB的非可视对象能实现继承,也能实现相应的代码重用。7、PB自定义对象中可视对象和非可视对象的区别?使用中两种对象都需要声明吗? 非可视对象是一个没有可视化对象的特殊处理对象。在此对象中不存在类似于数据窗口、按钮、列表框等可视对象,但它拥有自已的数据,以及处理这些数据的函数和事件。这些数据、函数和事件可以被认为定义了非可视对象的接口,我们通过接口来与非可视对象进行通信,也可以直接访问它的公有数据;可视对象是指可以是在舞台上显示出来的任何实例(如按钮、电影剪辑、Loader、UI控件等),这些都是从Disp

5、layObject派生的子类。可视对象不需要声明,非可视对象需要声明。8、Datawindow中每页打印固定行,如何设置? 1增加一个计算列,此计算列必须放在Detail段,Expression中输入: ceiling(getrow()/20)这里20还可以用全局函数取代,这样可以允许用户任意设置每页打印多少行。 2 定义分组,选择菜单Rows-Create Group. 按计算列字段分组,并一定将check box-New Page On Group Break选中。 3 将此计算列设为不可视。9、使用Update函数保存数据之前,通常要判断数据窗口中是否有主键重复的数据,如果有重复则不允许

6、提交。如果我们不编写程序判断,数据窗口本身业可以进行校验,但是显示的都是英文的提示信息。为此,我们通常在DBError事件中返回1以屏蔽该英文的提示信息,然后编写程序进行主键重复判断。 进行主键重复判断,实现的方法很多,效率高的不多。这里介绍的是效率非常高的一种方法。该方法的思路是,通过过滤,将只显示过一次的数据虑除,如果过滤之后数据窗口中还有数据,则说明有重复数据,代码如何实现? string ls_fieldname long ll_rc ls_fieldname = dept_id ll_rc = dw_1.RowCount() dw_1.SetFilter( ) dw_1.Filter

7、() dw_1.SetSort(ls_fieldname + A ) dw_1.Sort() dw_1.SetFilter(ls_fieldname + + ls_fieldname + -1 or GetRow() =1 ) dw_1.Filter() if dw_1.RowCount() ll_rc then MessageBox( 注意 ,ls_fieldname + 列中存在重复的数据! ,StopSign!) end if 10、请问一下两种代码哪种有信息框提示,为什么? (1)String ls_name,ls_temp SetNull(ls_temp) Ls_name = 张三

8、Ls_name = ls_name + ls_temp If IsNull(ls_name) Then MessageBox( 提示 , 空值! ) (2)String ls_name,ls_temp SetNull(ls_temp) Ls_name = 张三 If IsNull(ls_ temp) Then MessageBox( 提示 ,ls_name + ls_temp) 第(1)种代码有信息提示框;因为函数MessageBox ()经常用来显示一定的信息,和用户交互时经常使用。如果要显示的信息是NULL时,提示窗口不会显示。第(2)种中在MessageBox()函数中直接添加了字符串,

9、所以没有任何信息框提示。11、取得数据窗口中字段类型的语法如何写? Describe()函数可以得到数据窗口的多项属性值,用它实现如下:long ll_column_countlong ll_istring ls_column 列名string ls_column_text text的名字得到数据窗口的总列数ll_column_count = long(dw_1.Describe(DataWindow.Column.Count) 循环依次读取for ll_i = 1 to ll_column_count ls_columnll_i = dw_1.Describe(string(ll_i).Na

10、me)ls_column_textll_i = dw_1.Describe(ls_columnll_i _t.text)next12、一个数据窗口中有以下数据源 SELECT department.dept_id, department.dept_name, employee.emp_id, employee.emp_fname, employee.emp_lname FROM department, employee WHERE 在创建数据窗口时设置为Department表可修改更新,给出一段需要具有修改更新表employee的代码? UPDATE department.dept_id, d

11、epartment.dept_name, employee.emp_id, employee.emp_fname, employee.emp_lname SET department, employee WHERE13、用数据窗口代替 SQL 语句 通常,为了获得某些数据,采用数据窗口和 SQL 语句都是可行的,例:为了检索电话档案中的用户名,可以利用 SQL 语句,将所有的数据检索到一个多行编辑中,也可以检索到一个数据窗口中。如使用第一种方法: 方法一 首先定义一个游标: DECLARE CUR CURSOR FOR SELECT DA_DH . HM FROM DA_DH ; 然后可以:

12、string stxt,st int li open cur do li = li + 1 fetch cur into :stxtli ; st=st+stxtli + rn loop while stxtli close cur; mle_1.txt = st 方法二: dw_1.settransobject(sqlca) dw_1.retrieve() 请问哪种方法效率高? 方法二效率高。14、连库操作是非常影响执行速度的操作. 因此在程序中,一旦与数据库连接后就应当尽量保持与数据库的连接, 减少连接数据库的次数.PowerBuilder 提供里两个函数来建立数据窗口与事务对象的连接:

13、SetTrans() SetTransObject() 请问哪种执行速度更快?为什么? 这两个函数有一个重要的区别就是在使用SetTrans()函数时,用户不需做任何数据初始化或事务对象初始化工作;用户只需要在这里填充一个事务对象,PB就会自动完成对该事物对象的初始化以及和数据库连接的工作。而使用SetTransObject()函数时,用户必须首先把所用的事务对象连接到数据库上,但是使用SetTransObject()函数可以为数据库维持一个开放性的连接,因此在一般情况下,为了提高效率,总是采用SetTransObject()函数,所以SetTransObject()函数执行速度更快。15、将

14、数据窗口中的电话号码存放在一个数组中. 请比较下面两中方法. 方法一: string da_dh long ll,I ll = dw_1.rowcount() for i = ll to 1 stet 1 da_dhi = dw_1.getitemstring(i, dhhm ) next 方法二: string da_dh da_dh = dw_1.object.dhhm.current 哪种方法执行速度更快? 方法二速度更快。16、字段使用了下拉列表框、下拉数据窗口和单选按钮等有代码表的编辑风格时,在数据窗口控件上显示的值和字段实际得到的值并不相同,使用函数GetItemX只能读取这样的字

15、段的真实取值,而不是用户看到的值。如何才能读取得到用户看到的值? 可以使用函数LookUpDisplay。 LookUpDisplay函数不能直接从PowerScript调用,可以在Describe中和Evaluate函数配合使用。因为函数Lookupdisplay不能指定对哪行数据进行操作,它的参数只有一个字段名称,所以必须和Evaluate函数配合使用。该函数的语法是: Lookupdisplay(columnname) 其中,参数columnname是字段的名称,而不是一个字符串。函数执行错误则返回空字符串。17、如何将字符串”语文,数学,英语,物理”中逗号之间的内容,用一段代码一项一项

16、写到一个多行编辑框mle_list中? #include #include int main() char charArray=语文,数学,英语,物理;char *tokenPtr;coutThe string to be tokenized is:ncharArraynnThe tokens are:n;tokenPtr=strtok(charArray,,);while(tokenPtr!=NULL)couttokenPtrn;tokenPtr=strtok(NULL,,);coutendl;return 0;程序运行结果18、运用递归算法写一个函数实现1到100的累加 #include int add(int);int main() cout1+2+3+.+98+99+100=add(100);coutendl;return 0;int add(int n)if(n=1)return n;elsereturn n+add(n-1);程序运行结果:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁