当前位置:文档之家› 在PB 中 巧 用 下 拉 数 据 窗 口

在PB 中 巧 用 下 拉 数 据 窗 口

在PB 中 巧 用 下 拉 数 据 窗 口
在PB 中 巧 用 下 拉 数 据 窗 口

在PB 中巧用下拉数据窗口

---- PowerBuilder 作为目前比较流行的一种开发工具,有其独到之处,那就是数据窗口(DataWindow)。可以说,数据窗口是PowerBuilder 的核心,在对数据库的开发过程中,无论是录入、查询、统计还是报表,都离不开数据窗口。但是,除了数据窗口,PB 还提供了下拉数据窗口(DropDown DataWindow),下拉数据窗口的使用,使数据窗口更灵活,更方便,下面举例介绍在数据窗口中使用下拉数据窗口的一些技巧。

---- 在用数据窗口作数据录入时,经常用到代码录入,即对经常输入的某些值设置代码,录入时直接录入代码即可。例如,有两个表,主表main_table 和代码表code_table,结构如下:

main_table

字段名类型长度描述

Id integer 标识号

Name char 8 姓名

Sex char 4 性别

City Varchar 30 城市

Unit Varchar 40 单位

---- 下面,详细讨论如何使用下拉数据窗口:

一、静态设计下拉数据窗口

---- 首先对主表和代码表设计两个数据窗口dw_main 和dw_code,其中dw_main 包括字段id,name,sex,city 和unit;dw_code 包括字段code 和data。假设unit 字段有几个常用值可使用代码录入,则在设计dw_main 时,用鼠标右键点击字段unit,在下拉菜单中选择Properties...(属性),则系统会弹出unit 列的属性对话框,在其中选择Edit (编辑)项,并在Style(风格)下拉列表框中选择DropDownDW 项,然后在下面的Options(选项)框中作具体的选项配置:在DataWindow 下拉框中选择已设计好的代码数据窗口dw_code 作为下拉数据窗口;在DisplayColumn(显示列)下拉框中选择code 字段;在Data Column(数据列)下拉框中选择data 字段,这表示显示的是code 字段的内容,而实际存于表main_table 中的是data 字段的内容。至此,数据窗口设计完毕。

---- 设计完数据窗口后,需要建立一个数据录入的窗口(window),名字为w_input,在窗口w_input 上建立一

个数据窗口的控件dw_1,其属性DataWindow Object Name 为dw_main。并在w_input 的open 事件中写入下列语句:

dw_1.SetTransObject(SQLCA)

dw_1.Retrieve()

---- 这样,在执行此窗口时,在unit 字段上就会出现一个下拉列表框,列出了表code_table 中所有的内容,用户可以用鼠标选择录入。

二、动态改变SQL 语句

---- 在上面的例子中,如果表main_table 中的字段city 也需要代码录入,则还需为city 字段新建一个表,这样很麻烦,因为有几个字段需要代码,就须有几个表与之对应。我们可利用下拉数据窗口的一些特点减少麻烦。对此,可以相应地修改表code_table 的结构,加一个字段field(char(30)),以存储需要代码的字段名,这样,就可利用SQL 语句对之进行检索,以得到某字段的所有代码。具体实现如下:重新设计数据窗口dw_code,把field 字段加上并使它不可见(因为用户不需要见到该字段的内容),数据窗口dw_main 和窗口w_input 的设置如上,只是在数据窗口dw_1 中需

要进行一些编程,具体是在ItemFocusChanged 事件中,加入如下的代码:

String ls_sql

Integer rtncode

DataWindowChild field_child

//dwo为该事件的参数,

其name属性的值表示获得焦点的字段名

Choose Case lower(https://www.doczj.com/doc/6413341208.html,)

Case 'city' //city字段获得焦点

//获得city字段下拉数据窗口的句柄

rtncode = dw_1.GetChild("city",field_child)

If rtncode = -1 Then MessageBox( "Error", "Not a DataWindowChild")

//设置事务对象

field_child.SetTransObject(SQLCA)

//获得下拉数据窗口的SQL语句

ls_sql = field_child.GetSQLSelect()

//重新设置SQL语句,加上Where条件

ls_sql = ls_sql + " Where field = '" + https://www.doczj.com/doc/6413341208.html, + "'"

field_child.SetSQLSelect(ls_sql)

//取得满足条件的数据

field_child.Retrieve()

Case 'unit' //unit字段获得焦点

//获得unit字段下拉数据窗口的句柄

rtncode = dw_1.GetChild("unit",field_child)

......(此处编程同上一样)

End Choose

三、动态设置取值参数

---- 上例中,是采用动态改变SQL 语句实现的,其实,下拉数据窗口有一种更简单的方法就是设置取值参数(Retrieval Arguments)但这种方法适合从固定表中取数据,如果是从动态表(即表名不固定)中取数据,则只能通过改变SQL 语句来实现。

---- 修改数据窗口dw_code,在图形方式下,选择Design 菜单下的Retrieval Arguments...,设置取值参数的类型为String,名字可任取,假设为field_data,然后在窗口下面的Where 标签中选择Column 为"code_table.field",Operator 为" =",Value 为取值参数的值:field_data( 变量名前加冒号表示该变量的值),至此,取值参数设置完毕。同上例,也需要在窗口w_input 中的数据窗口控件dw_1 中的ItemFocusChanged 事件中进行如下的编程:

Integer rtncode

DataWindowChild field_child

//dwo为该事件的参数,

其name属性的值表示获得焦点的字段名

Choose Case lower(https://www.doczj.com/doc/6413341208.html,)

Case 'city' //city字段获得焦点

//获得city字段下拉数据窗口的句柄

rtncode = dw_1.GetChild("city",field_child)

If rtncode = -1 Then MessageBox

( "Error", "Not a DataWindowChild")

//设置事务对象

field_child.SetTransObject(SQLCA)

---- // 利用取值参数取得满足条件的数据,如果没有数据,则插入一空记录,// 否则系统会提示一个英文对话框,要求输入取值参数的值。

If field_child.Retrieve(https://www.doczj.com/doc/6413341208.html,) < 1 Then field_child.InsertRow(0) Case 'unit' //unit字段获得焦点

//获得unit字段下拉数据窗口的句柄

rtncode = dw_1.GetChild("unit",field_child)

......(此处编程同上一样)

End Choose

---- 至此,已介绍了使用下拉数据窗口的一些技巧,希望能给读者提供一些帮助。

ddlb_czy

cb_qury cb_close

pb数据窗口常用代码

一、连接数据库 连接数据库也就是指定事务对象。PowerBuilder提供了两个函数:SetTrans()和SetTransObject()。 语法格式: dw_control.SetTrans(TransactionObject) dw_control.SetTransObject(TransactionObject) 其中,dw_control是所使用的数据窗口控件,transactionObject是所要指定的事务对象。 这两个函数有一个重要的区别就是在使用SetTrans()函数时,用户不需做任何数据初始化或事务对象初始化工作。用户只需要在这里填充一个事务对象,PB 就会自动完成对该事物对象的初始化以及和数据库连接的工作。而使用SetTransObject()函数时,用户必须首先把所用的事务对象连接到数据库上。但是,这并不意味着SetTrans()函数比SetTransObject()函数更好,使用SetTrans()函数时,每调用一次函数必须连接一次数据库,因为这个函数在每个事务处理的末端都会执行Disconnect语句。与此相反,使用SetTransObject()函数可以为数据库维持一个开放性的连接。因此在一般情况下,为了提高效率,总是采用SetTransObject()函数。 这两个函数都是成功时返回1,发生错误时返回-1。 二、检索数据 用于检索数据的函数只有一个,就是Retrieve()函数。 语法格式: dw_control.Retrieve() 如果数据窗口控件上的数据窗口对象是有检索参数的,就要在这个函数调用时加上检索参数。而且检索参数必须和数据窗口对象中定义顺序一致。 此函数返回一个长整型的数据,代表检索出来的数据行数。如果发生错误,将返回-1。 三、更新数据 当用户对数据窗口对象内的数据修改后,想把这些修改反映到数据库中去时,必须使用Update()函数。 语法格式: dw_control.Update() 这个更新可能成功,也可能失败。一般在这个函数被调用之后,总是要做一个检查。请看下面的例子: Int li_return

PB数据库连接的问题

connection failed:specified database is invalid 一个asa数据库的db文件,移植到别的机器上的时候,使用的目录并不一样,所以就出错了用odbc连接时出标题中的提示,使用一下方法解决 通过课程设计实践,对PB中的数据库连接总结如下:在用PB时,我们经常使用它本身携带的数据管理系统Adaptive server anywhere (ASA),并用它来创建(ASA)数据库,在创建数据库后,当我们将数据库移到其他文件夹或者其他电脑时,怎样去连接数据库呢?分为两种情况: 第一种:在建该数据库时,没有默认创建数据库日志文件:如下 在创建(ASA)数据库时,把那个允许创建日志前面的钩去掉 连接步骤如下 (1)配置ODBC数据源。 1.双击ODBC中Utilities中的“ODBC Administrator”项

2.打开的窗口中,点击“用户DNS”页,点【配置】修改已有数据源或者点【添加】创建新数据源,以新建为例。 填写ODBC中“Date source name” 选择Database中“Datebase file”路径,然后点击【确定】完成数据源创建。 (2)配置DB Profile。 1. 右击“ODB ODBC”项,选择“New profile”

选择“Connection”选项卡,填写“Profile Name”,名称自定;在“Database Source”中选择刚才创建的数据源。如果已经设置过,在“user id”、“password”具体填写。点击【OK】 (3)连接数据库。 如图所示,右击刚才创建的“Profile Name”——Admin,选择“connect”即可。 第二种:如果在建数据库时,默认创建数据库日志文件:在建立数据库的时候,勾选了Use Transaction Log选项,导致创建了日志

PB动态数据窗口

[PB]-动态数据窗口 〓创建动态数据窗口 若要动态创建数据窗口,需要使用函数Create,该函数的语法如下: dw_1.Create(syntax{,errorbuffer}) 其中,dw_1是数据窗口控件的名称,该数据窗口控件要和新创建的数据窗口对象相关联。syntax是用来描述创建数据窗口对象的确切语法的字符串。errorburrer是可选项,用来保存创建数据窗口对象过程中发生的错误信息。如果不指定该参数,就会在发生错误时显示一个错误信息的提示窗口。如果创建成功该函数返回1,否则返回-1,如果参数为null则函数返回null。 由于Create函数成功创建数据窗口对象后,要改变dw_1数据窗口控件所关联的数据窗口对象,因此,需要重新为数据窗口设置事务对象(使用函数SetTransObject或者SetTrans)。 获取创建数据窗口的语法有多种方法,可以对相关的SQL语句使用SyntaxFromSQL函数,也可以使用对已经创建好的数据窗口对象使用LibraryExport函数。因为创建数据窗口的语法比较复杂,即使使用了LibraryExport输出已有数据窗口对象的语法,操作起来也相当费劲。所以,更为通用的是前面一种方法。这种方法配合一定的编程技巧,让用户指定要创建的数据窗口对象的SQL语句,使用户有更多的自由和选择。使用这种方法,肯定用到函数 SyntaxFromSQL,它的语法是: transaction.SyntaxFromSQL(SQLselect,presetation,err) 其中,transaction是事务对象的名称,该事务对象必须正确地设置了相关参数,并且和数据库建立了联结。SQLselect是用来创建数据窗口的SQL语句,为String 类型。presentation是要创建的数据窗口对象的显示风格,为String类型。简单的格式是: Style(Type=presentationstyle) 其中Style和Type都是保留字,presentationstyle的取值有Tabular,Grid,Form,Graph,Group,Label和Nup,其中Tabular是缺省类型。err是用来保存函数执行时出错信息的string类型的变量。 *关于函数SyntaxFromSQL的参数presentation可以有更复杂的语法。其格式是:"Style ( Type=value property=value ... ) DataWindow ( property=value ... ) Column ( property=value ... ) Group groupby_colnum1 Fby_colnum2 ... property ... ) Text property=value ... ) Title ( 'titlestring' )" 使用这样的格式,可以详细定义要创建的数据窗口对象的外观。 〓在很多情况下都需要一个数据窗口控件和不同的数据窗口对象关联。可以通过修改数据窗口控件的dataobject属性来实现。在修改了这一特性之后,数据窗口控件就不再具有与它相关的事务处理对象了,应该再重新为数据窗口设置事务

pb中数据窗口函数总结

pb中数据窗口函数总结 一、连接数据库 连接数据库也就是指定事务对象。PowerBuilder提供了两个函数:SetTrans()和SetTransObject()。 语法格式: dw_control.SetTrans(TransactionObject) dw_control.SetTransObject(TransactionObject) 其中,dw_control是所使用的数据窗口控件,transactionObject是所要指定的事务对象。 这两个函数有一个重要的区别就是在使用SetTrans()函数时,用户不需做任何数据初始化或事务对象初始化工作。用户只需要在这里填充一个事务对象,PB就会自动完成对该事物对象的初始化以及和数据库连接的工作。而使用SetTransObject()函数时,用户必须首先把所用的事务对象连接到数据库上。但是,这并不意味着SetTrans()函数比SetTransObject()函数更好,使用SetTrans()函数时,每调用一次函数必须连接一次数据库,因为这个函数在每个事务处理的末端都会执行Disconnect语句。与此相反,使用SetTransObject()函数可以为数据库维持一个开放性的连接。因此在一般情况下,为了提高效率,总是采用SetTransObject()函数。 这两个函数都是成功时返回1,发生错误时返回-1。 二、检索数据 用于检索数据的函数只有一个,就是Retrieve()函数。 语法格式: dw_control.Retrieve() 如果数据窗口控件上的数据窗口对象是有检索参数的,就要在这个函数调用时加上检索参数。而且检索参数必须和数据窗口对象中定义顺序一致。 此函数返回一个长整型的数据,代表检索出来的数据行数。如果发生错误,将返回-1。 三、更新数据 当用户对数据窗口对象内的数据修改后,想把这些修改反映到数据库中去时,必须使用Update()函数。 语法格式: dw_control.Update() 这个更新可能成功,也可能失败。一般在这个函数被调用之后,总是要做一个检查。请看下面的例子: Int li_return li_return = dw_1.Update() IF li_return = 1 THEN

PB用ODBC连接数据库(SQL Server)和用专用接口连接数据库的区别

问题1:PB用ODBC连接数据库(SQL Server)和用专用接口连接数据库的区别? 我发现PB用专用接口连接数据库时,对Varchar型字段最多只能存200多个汉字,但是用ODBC 连接可以存4000个,可达到Varchar(8000)的最大长度,这是什么原因,怎么改进? 专用接口连接数据库时,对SQL Server的存储过程支持要比ODBC 好,如果用ODBC 连接,对带参数的数据窗口(采用存储过程),没法传递参数,但是专用接口连接数据库却可以。 问题2:关于PB动态生成数据窗口的问题。比如用如下代码生成一个数据窗口,在编辑时每一个编辑框都会出现一个兰色的背景框或者底框,怎么去掉? ========================================================== string ERRORS, sql_syntax string presentation_str, dwsyntax_str sql_syntax = "SELECT emp_data.emp_id,"& + "emp_data.emp_name FROM emp_data "& + "WHERE emp_data.emp_salary > 45000" presentation_str = "style(type=grid)" dwsyntax_str = SQLCA.SyntaxFromSQL(sql_syntax, & presentation_str, ERRORS) IF Len(ERRORS) > 0 THEN MessageBox("Caution", & "SyntaxFromSQL caused these errors: " + ERRORS) RETURN END IF dw_1.Create( dwsyntax_str, ERRORS) IF Len(ERRORS) > 0 THEN MessageBox("Caution", & "Create cause these errors: " + ERRORS)

PB840呼吸机参数

PB 840呼吸机介绍 PB 840呼吸机(新生儿全功能型) PB-840TM 新生儿-成人呼吸机是PB公司最新21世纪的机型,它是高科技与临床需求的完美结合。 独有的呼气灵敏度调节,智能的报警系统。 独家专利的主动呼气阀和标准的后备电池使PB-840新生儿-成人呼吸机更适应监护病房处理呼吸问题所需的要求。 顶尖的气路设计,减低吸气做功。在与其它呼吸机的比较中,触发时间时最短的,能够很好的做到与病人的同步性。 独有的理想体重设置(IBW)可防止不适当的呼吸机设置用于病人。输入理想体重后,呼吸机自动调用默认设定和报警限度,有利于进行快速设置并能作相应调整,有利于新医生快速掌握设置。在急症收治病人也能方便设置。 采用彩色(TFT)DualView双屏幕触摸屏,分别显示监护数据和呼吸机设置数据,使操作者一目了然,能快速判断病人情况而给予处理。而其他同类的呼吸机只是单屏显示,在设置时会带来不便。 独有的彩色显示,分别用不同颜色显示自主吸气、机械吸气和呼气,有利于临床观察。SmartAlarm智能报警系统提供优先等级报警,“紧急报警”,“次紧急报警”,“相关报警”分别用红,黄,绿颜色表示。并同时显示报警原因及建议解决方法,以便高效的处理报警情况。独家专利的主动呼气阀,防止过冲压力并可在吸气相实现主动性呼气,使呼吸机更易于病人合拍。 可调的呼吸灵敏度,可补偿呼气时的漏气,并可使呼吸机更适应病人的需求。 独有的吸气端和呼气端的细菌过滤器,能够做到完善的 保护病人,避免病人之间、医患之间的交叉感染。且细菌过滤器可以反复消毒使用,降低后期成本。而别的呼吸机多只有一个吸气端细菌过滤器,容易造成交叉感染,且别的品牌为一次性使用。 独有的晶体热膜式流量传感器,非耗品,经久耐用;而别的品牌呼吸机或是压差式流量传感器,是耗品,要定期更换,增加后期成本;或是热丝式,易坏,增加后期成本。 对呼吸回路的顺应性和阻力或泄漏自动进行补偿,所有呼出气容量均进行BTPS校正,保证通气更为灵敏和精确。 R/VT浅快呼吸指数的监测,对于患者拔管前的判断很有帮助。 Bi-Level(双水平正压通气)模式,使病人通气更方便,满足临床治疗的需要 功能特点 1.用户界面方便直观,双触摸屏幕显示,使用更方便。 2.临床操作简洁,自动计算结果,独有的理想 体重设置(IBW)可防止不适当的呼吸机设置用于病人。 3.拥有多种通气模式可以进行选择。 4.独有的彩色显示,有利于临床观察。 5.多档可调灵敏度,更适应病人的需求。 6.独有的细菌过滤器,避免病人之间、 医患之间的交叉感染。

PB中下拉数据窗口带参数应用

PB中下拉数据窗口带参数应用 在数据输入时,当用到下拉列表时,会发现有些数据是和别的数据相关的,这时我们会希望过滤掉那些不相关的数据。例如生成一个入库单,某种物料有多个供应商,我们要根据物料来过滤掉和这个物料不相关的供应商,这样会加快检索和输入的速度。 入库单表:billrec

1.以supply表,制作一个带参数的数据窗口,命名为d_supply_replace_list,参数列为item_id,字符型,隐藏物料代码列。 2.以billrec表,制作一个数据窗口,命名为billrec_maintain,将supply_id列的edit属性中的style type选定为DropDownDW,datawindow为d_supply_replace_list。 在窗口中放置数据窗口控件dw_1,将其与billrec_maintain数据窗口关联。 在窗口中定义实例变量datawindowchild idwc_child。 3.在dw_1的constructor事件中编写以下脚本: this.getchild("supply_id",idwc_child) //生成子数据窗口,supply_id为下拉列表列idwc_child.insertrow(0) idwc_child.settransobject(SQLCA) this.of_settransobject(SQLCA) this.insertrow(0) 4.在dw_1的itemchanged事件中编写以下脚本: long ll_getcolumn ll_getcolumn = this.getcolumn() //获得当前列 choose case ll_getcolumn case 7 //假设item_id列是第7列 dw_1.accepttext() is_id = dw_1.getitemstring(row,7) //获得物料代码 idwc_child.retrieve(is_id) //检索替代供应商 end choose 这样在输入不同的物料时,会像下图那样,只列出相关的供应商。

pb数据窗口技巧38个 收藏

pb数据窗口技巧38个收藏 1 使DataWindow列只能追加不能修改 如何使DataWindow中的数据只能追加新记录而不能修改,利用Column 的Protect 属性可以很方便的做到这一点,方法如下:将每一列的Protect 属性设置为: If( IsRowNew(), 0, 1) ) 在PowerScript 中可以动态修改Protect 属性: dw_1.Modify("column_name_here.Protect='1~tIf(IsRowNew(),0,1)'") 这样,DataWindow 中只有新追加的记录可修改,而其他记录是只读的。 2 如何在DataWindow中实现列的自动折行 我们在PowerBuilder应用程序的开发过程中, 使用DataWindow时, 经常会遇 到某列的数据太长, 不能同时全部显示的情况. 若采用自动水平滚动, 操作起 来又不够简便. 下面介绍一种方法, 实现列数据多行显示, 即实现列数据的自 动折行.具体步骤如下: 1) 在DataWindow Painter中打开此DataWindow. 2) 在需设定自动折行的列上双击鼠标, 弹开此列的属性窗口. 3) 选择Position标签, 选中Autosize Height 多选框. 4) 选择Edit标签, 不选中Auto Horz Scroll多选框. 5) 单击OK按钮, 保存所做的修改. 6) 点中Detail Band (即写有Detail的灰色长带), 单击鼠标右键, 选择 Properties... 菜单项. 7) 选中Autosize Height多选框. 8) 单击OK按钮, 保存所做的修改.

pb实验指导

实验一数据库的创建与连接 目的和要求 (1)掌握PowerBuidler9.0数据库的创建与连接方法; (2)创建一个SQL Server数据库,为其配置ODBC数据源和DBProfile,然后在PowerBuilder环境中连接数据库; (3)创建数据库中的表,管理表并输入数据到表中。 上机准备 (l)启动Windows操作系统,如果在Windows操作系统的控制面板中没有安装ODBC32,必须进行ODBC的安装; (2)进人PowerBuilder 9.0集成环境,熟悉系统环境; (3)创建的应用个人应用mypb; (4)复习创建数据库的有关内容。 上机步骤 1..创建SQL Server 数据库 创建SQL Server数据库的步骤: (1)运行SQL Server 服务; (2)运行SQL Server 企业管理器; (3)创建student数据库; (4)在student数据库中,创建student表(见表1)。 2.配置ODBC 数据源 配置ODBC数据源的步骤: (1)在PowerBuilder数据库画板的窗口中,双击ODBC项下Utlities项的“ODBC Administrator”项,将弹出“ODBC数据源管理器”对话框: (2)选择“用户DSN”页,在该页的列表框中,列出了已有的数据源,若要修改已有的数据源,可以中击“配置”按钮进行修改。这里,我们需要添加一个ODBC数据源,所以,中击“添加”按钮创建新数据源,将出现标题为“创建新数据源”的对话框; (3)在“创建新数据源”的对话框中提供了一个系统支持的数据库驱动程序列表框,选择合适的驱动程序。这儿我们选择SQL Server,单击“完成”按钮,将弹出“创建SQL Server 新数据源”对话框; (4)输入新的数据源名称,这里为mydb。然后,选择想连接的SQL Server服务器,可选择local,然后单击“下一步”按钮; (5)选择SQL Server验证,登录ID 为sa,密码默认为空,然后单击“下一步”按钮; (5)更改默认的数据库为student,然后单击“下一步”按钮; (5)默认系统值,然后单击“完成”按钮;

PB与数据库的连接方法

PowerBuilder程序与数据库之间传递信息的一个结构变量,共有15个成员.你可以详细列表它的所有成员看看它的组成.PB的应用程序会初始化一个全局的结构体变量,SQLCA,当然你也可以自定义一个自己的事务对象. 1 DBMS string 所使用的数据库管理系统的名字,如Sybase,Oracle,ODBC。 2 Database string 要连接的数据库名字。 3 UserID string 连接数据库所用的用户名。有的DBMS不需要此项。 4 DBPass string 用户连接数据库的口令。 5 Lock string 这是数据库的保护级别,一般不必给出。 6 LogID string 登录到数据库服务器上的用户名,有的DBMS不需要此项,但Sybase和Oracle 需要指定这个参数。 7 LogPass string 登录到数据库服务器上的用户口令。这个属性可设可不设,但Sybase和Oracle需要指定口令。 8 ServerName string 数据库服务器名。 9 AutoCommit boolean 指定是否将数据库设置成自动提交所有事务。默认是False,也就是说,必须在应用程序中进行事务管理,并在适当的时候对数据库提交事务。如果选择True,则每个事务都由系统自动提交。 10 DBParm string 用于向数据库传递特殊信息的属性。 11 SQLCode long 指示最近一次SQL操作失败或成功。它的取值为:返回结果0 无错误。-1 出现一个错误。100 没有检索到数据。 12 SQLNRows long 最近一次SQL操作影响的行数,数据库不同其含义也不同。 13 SQLDBCode long 数据库错误代码。不同的数据库的含义不同。 14 SQLErrText string 相应于SQLDBCode属性中错误码的文字说明。 15 SQLReturnData string 返回DBMS执行SQL的附加信息,不同的DBMS其值不同。 2.我常见到做好的PB程序使用.ini文件来控制与数据库连接,可以方便的进行应用程序移植只需修改其中与数据库连接参数即可,我想问这些.ini文件只能使用手工编写吗,我见到很多.ini文件参数极多不象手写好象是机器生成的,不知道如何生成啊?请大家指教 1、其实PB中在新建---点TOOL----FILE EDIT 可以生成(编辑)INI文件。最直接就是工具栏中的EDIT图标。 2、机器生成代码是:点DATABASE图标-----选择连接方式。如:选MSS MICROSOFT SQL SERVER 右键-NEW PROFILE 按要求填定一些参数后在--PREVIEW中可以看到代码,把它复制到INI文件中就行了。 3.编程经验--PB数据库连接 作者:郭洪建无法确定网上来源,如有准确首发,请与本站联系 通过这些年的信息系统开发经验,使我对POWERBUILDER的理解更进一步,最近在开发某子系统模块时,遇到了一个奇怪的问题,这里给大家介绍一下. 通常在使用PB和数据库管理系统(DBMS)连接时,使用两种方式:

PB 数据窗口高级( DataWindow)应用37个技巧

PB 数据窗口高级( DataWindow) 37个技巧 1. 使DataWindow列只能追加不能修改 如何使DataWindow中的数据只能追加新记录而不能修改,利用Column 的Protect 属性可以很方便的做到这一点,方法如下: 将每一列的Protect 属性设置为: If( IsRowNew(), 0, 1) ) 在PowerScript 中可以动态修改Protect 属性: dw_1.Modify("column_name_here.Protect='1~tIf(IsRowNew(),0,1)'") 这样,DataWindow 中只有新追加的记录可修改,而其他记录是只读的。 2 .如何在DataWindow中实现列的自动折行 我们在PowerBuilder应用程序的开发过程中, 使用DataWindow时, 经常会遇 到某列的数据太长, 不能同时全部显示的情况. 若采用自动水平滚动, 操作起 来又不够简便. 下面介绍一种方法, 实现列数据多行显示, 即实现列数据的自 动折行.具体步骤如下: 1) 在DataWindow Painter中打开此DataWindow.

2) 在需设定自动折行的列上双击鼠标, 弹开此列的属性窗口. 3) 选择Position标签, 选中Autosize Height 多选框. 4) 选择Edit标签, 不选中Auto Horz Scroll多选框. 5) 单击OK按钮, 保存所做的修改. 6) 点中Detail Band (即写有Detail的灰色长带), 单击鼠标右键, 选择Properties... 菜单项. 7) 选中Autosize Height多选框. 8) 单击OK按钮, 保存所做的修改. 9) 保存此DataWindow. 注意: 连在一起的汉字(中间没有标点或空格分隔), 系统将认为是一个单词, 不 会自动进行折行. 3. 在数据窗口中实现动画 要实现动画,必须要有定时器,在数据窗口中已经有了一个定时器,双击数据窗口将弹出的对话框,在Timer Interval中定义大于零的值就有定时器(可以精确到毫秒),有了这个定时器就可以实现动画了。比如要改变某字段的背景颜色,可设 ackgound.color=RGB(Integer(Right(string(now(),'hhmmssf'),1))*256/10,In teger(Right(string(now(),'hhmmssf'),1))*256/10,0) 当然,您不仅可以改变背景颜色,而且可以改变字体等等任何属

PB数据窗口使用绝对技巧与方法

原文地址:PB数据窗口绝对技巧作者:千人急 1、如何让存储文件目录的列,显示图片? 答:选择对应的column的display as picture属性为true 2、如何复制grid类型的所选择的行的数据到系统剪切板? 答:string ls_selected ls_selected=dw_1.Object.DataWindow.Selected.Data clipbord(ls_selected) 4、如何设置的DW底色? 在DW的editsource中改变color的值 5、如何将Grid风格改成自由格式? 在DW的editsource中将processing=1的1改为0 6、要新建一个表A但风格和现有表格B风格一样,怎么将A表快速设置成表B 风格? 复制B表C,在C表的DW中的editsource中将表名和字段名改成A表的,即可 7、如何实现gird风格的datawindow的多栏表头? 答:添加 text到header带区,并设置band属性为foreground保存,edit source 修改text的x和width属性表达式如下: x="100~t integer(describe('firstcol.x')" width="100~tinteger(describe('lastcol.x')) - integer(describe('firstcol.x')) +integer(describe('lastcol.width')) 8、如何过滤dddw编辑风格的显示值为指定值的记录? 答: dw_1.setfilter("lookupdisplay('column_name')='"+ls_display_value_your +"'") dw_1.filter() 9、如何设置datawindow的某一列为空?

PB数据窗口绝对技巧

PB数据窗口绝对技巧 1、如何让存储文件目录的列,显示图片? 选择对应的column的display as picture属性为true。 2、如何复制grid类型的所选择的行的数据到系统剪切板? string ls_selected ls_selected=dw_1.Object.DataWindow.Selected.Data clipbord(ls_selected) 3:如何改变GRID数据窗口列位置(新手常见) 先preview,然后在预览窗口拖动位置即可。 4、如何设置DW的底色? 在DW的editsource中改变color的值。 5、如何将Grid风格改成自由格式? 在DW的editsource中将processing=1的1改为0。 6、要新建一个表A但风格和现有表B风格一样,怎么将A表快速设置成表B风格? 复制B表C,在C表的DW中的editsource中将表名和字段名改成A表的,即可。 7、如何实现gird风格的datawindow的多栏表头? 添加text到header带区,并设置band属性为foreground保存,edit source修改tex t的x和width属性表达式如下: x="100~t integer(describe('firstcol.x')" width="100~tinteger(describe('lastcol.x')) - int eger(describe('firstcol.x')) +integer(describe('lastcol.width')) 8、如何过滤dddw编辑风格的显示值为指定值的记录? dw_1.setfilter("lookupdisplay('column_name')='"+ls_display_value_your+"'") dw_1.filter() 9、如何设置datawindow的某一列为空? string ls_temp[] setnull(ls_temp) dw_1.object.columnname.primary.current=ls_temp 10、如何设置datawindow的单双行不同颜色间隔? 在detail带区的color属性表达式中写上if(mod (getrow(),2)=1 ,rgb(255,0,0),rgb(0,25 5,0)),如果是当前行以第三种颜色表示,表达式如下:if(getrow()=current(), rgb(255,0,0),if(m od(getrow(),2)=1 ,rgb(0,0,255),rgb(0,255,0))) 11、如何获取指定名称的datawindowobject? DWObject ldwo_use,ldwo_abc ldwo_use = dw_1.Object ldwo_abc = ldwo_use._ _get_attribute("t_1",FALSE)//t_1为datawindow中text对象的名称 12、如何缩放datawindow的打印大小?

PB简单应用——连接数据库简单操作

1.打开sybase数据库,选择工具---创建数据库,弹出创建数据库向导,选择数据库保存位置,如下图: 单击完成,成功创建数据库,如下图: 2.右键单击“表”,选择新建表,在弹出的对话框中填入表名,并点击完成,创建一个表,如图所示:

3.在主键中填上“ID”,其标示城市编号,选择数据类型。在空白处右键单击,选择新建——列,新建一列,并填入相应的值,如下图所示: 保存后,点击“数据”选项 3.在空白处右键单击,选择新建行,向表中添加适当的内容,如下图: 保存数据库。 4.在开始中打开SQL anywhere ODBC管理器,点击添加按钮,选择anywhere10,点击完成。弹出如图所示的对话框: 在数据源名中填入刚才建的数据库名:test,单击数据库选项卡,点击浏览找到test数据库文件并选取,进入登陆选项卡,填入相应的ID和口令(预先设定好的数据库口令),单击确定,添加数据库。在ODBC管理器中选择刚才添加的数据库,点击配置,点击测试连接,测试器连接是否成功。点击确定完成连接。 5.打开PB,选择new workspace,取文件名:city,点击保存。

6.在新建的workspace上右键单击,选择NEW 打开其对话框,如图: 选择Application单击OK。 7选择左侧窗口的cityintroduce双击,在右侧打开的界面中,输入以下代码: //profile psi SQLCA.DBMS="ODBC" SQLCA.AutoCommit=False SQLCA.DBParm="connectstring='DSN=test;UID=dba;PWD=sql'" CONNECT; if SQLCA.sqlcode<>0 then messagebox("提示","数据库连接失败!") else open (w_city) end if 其作用是判断数据库是否连接成功。效果如图(完成8后的效果): 8. 在项目上右击选择new_PB Object ---window,OK确定,在窗体中拖放一个文本显示组件和两个按钮组件,命名默认,按钮的TEXT分别填入:show和close。双击文本显示组件9.在项目上右击选择new——DataWindow——Grid点击OK,SQL Select,下一步,选择test数据库确定。完成后,在打开的窗口中,选取ID,name,people三项,关闭此窗口,在弹出的窗口中点击下一步,完成,弹出一个新的窗口,如图:保存并命名d_city

PB]-子数据窗口操作

PB]-子数据窗口操作 PB]-子数据窗口 **通常的子数据窗口也就是下拉数据窗口。子数据窗口也是普通的数据窗口对象,没有什么特殊的地方,它的创建方法、可以使用的控件、编程时可以使用的函数等,都和普通的数据窗口相同。特殊的地方只是因为它放在了父数据窗口中,需要和父窗口进行配合。 **当为数据窗口中某字段指定为下拉数据窗口编辑风格时,必须提供以下三个属性: a)子数据窗口名称。 b)显示字段名称:该字段中的内容显示在父数据窗口的字段上,只是显示。 c)数据字段名称:该字段中的内容要赋给父数据窗口的字段,要保存到数据库中。 分别对应数据窗口画板的Edit属性页中的:Eidt Style、Display Column、Data Column。 *子数据窗口不能再包含子数据窗口;父数据窗口可以对其包含的子数据窗口进行插入、删除、检索和保存等操作。 **获取子数据窗口的引用是进行其他操作的前提,使用函数GetChild来获取指定字段的子数据窗口。该函数的语法如下: dw_1.GetChild(name,dwchildvariable) 其中,dw_1.是数据窗口控件名称;name为字段名称,为string类型;dwchildvariable为datawindowchild 类型变量,该变量在函数正确执行后保存对子数据窗口的引用。该函数正确执行则返回1,否则返回-1。在获取了子数据窗口的引用之后,就可以捡索子数据窗口中的数据了。但是,检索子数据窗口的情况比较多,并且也有多种方法。 **保证子数据窗口中的数据更新 用户使用下拉数据窗口录入数据时,其中的数据并不一定有用户需要的。在某些情况下不允许用户再输入其他值,否则可能造成数据的不一致性,这时就可以不再编写其他的脚本。但在允许用户录入时,就需要把用户录入的数据保存在子数据窗口对应的数据表中,以便以后数据录入时不再重复输入该数据。这时就应该编写脚本保存该数据了。 **检索子数据窗口 在应用中,对子数据窗口的编程不是检索数据,就是更新其中的数据。检索数据时,如果只显示子数据窗口中同父数据窗口中某字段取值对应的数据,这时子数据窗口的定义就应该有检索参数。根据检索和更新数据这两个因素,可以将检索数据的情况划分成以下三种: a)没有条件限制,并且不允许更新。 b)没有条件限制,并且允许更新。 c)有条件限制,不管是否可以更新。

PowerBuilder数据库开发技术

PowerBuilder数据库开发技术 实验指导书 实验目录

1.实验一、PowerBuilder集成环境 2.实验二、PowerBuilder数据定义 3.实验三、PowerBuilder数据操纵 4.实验四、PowerBuilder窗口设计 5.实验五、PowerBuilder菜单设计 6.实验六、PowerBuilder数据窗口设计 7.实验七、小型数据库应用系统开发 实验一:PowerBuilder集成环境

一.实验目的 1.掌握PowerBuilder的启动与退出 2.熟悉PowerBuilder集成环境,包括菜单,工具条以及帮助 3.熟悉PowerBuilder的类库管理,并创建一个简单应用 4.熟悉窗口与菜单设计画板,添加设计和使用窗口与菜单 二.实验内容 1. PowerBuilde的启动与退出 2.熟悉PowerBuilde集成环境 3.创建一个简单的应用。 三.实验条件 1.提供一台WINDOWS XP操作系统的计算机 2.提供PowerBuilder9.0设计环境 四.实验步骤 1.启动与退出 在安装完后,可以通过WINDOWS开始菜单找出Sybase 程序组中的PowerBuilder9.0启动PowerBuilder. 启动后即出现如图所示的主窗口,可以选择菜单File/Exit 退出并关闭PowerBuilder. 2.熟悉PowerBuilder集成环境,包括菜单、工具以及帮助 画板是PowerBuilder提供的专项设计工具,PowerBuilder为窗口菜单数据窗口用户对象函数结构数据库数据管道以及应用提供画板。如WINDOWS画板是用来设计应用程序窗口界面。画板也是有多个子窗口组成,如WINDOWS画板有Layout外观子窗口,Properties 属性子窗口,Script脚本子窗口,Declare申明变量子窗口,这些子窗口可以在菜单View 中选取打开。 3.创建一个简单应用 选择File/New 出现一个新建对话框 (1)创建一个工作区Workspace ,输入工作区的名称Myspace,在Systemtree中出现建好的工作区。 (2)新建一个应用,打开Target/Application,输入应用的名称Test,选择类库文件保存的路

PB源码大全

getfirstletter.zip 5K 取汉字拼音的首字母 ctrl_alt_del.zip 5K 关掉ctrl_alt_del热键 multithread.zip 8K 多线程实现的例程 wallpaper.zip 10K 显示图片的例程 w_test.srw 4K 如何使用COM对象:WORD EXCEL errortrap.zip 19K 错误陷阱模块,错误信息可以是中文的了 taskbar5.zip 10K 把PB程序加入到系统任务栏(WIN95/97/98系统) exfuns.zip 23K 常用的外部动态链接库函数 alltext45.zip 3419K 现RichText,功能更强大,中文不会出现问题。(但不能象PB自带的RichText可以和DataWindow紧密结合) closeapp.zip 5K 关闭程序 context.zip 14K 实现Win95风格的上下文帮助,原来只有VB才有此功能,请看PB如何实现,帅呆了! multi.zip 41K sybase提供一个关于在在PB中实现多线程的例子。使用SharedObjectRegister,SharedObjectGet函数实现。 mdigraph_v2.zip 97K 允许在MDI主窗口显示图形,加强程序视觉效果。解决了当其它应用覆盖MDI窗口会出现图片被盖住的部分不能刷新。例如切换输入法就会出现上述问题。numerical.zip 14K 一个用户对象用于实现十进制,二进制,十六进制之间的互相转换,已经写了一个简单的例程.调用很方便.使用PFC的用户只需简单的将n_cst_numerical替换为本程序中的对象即可. pbfix.zip 17383K PB 6.5.1中对以前PB版本进行修正过的错误列表。 pfc.txt 34K PFC入门的中文介绍,PFC是PowerBuilder开发组为PB开发的框架包,结构严谨,功能强大,为PB专业开发人员的首选。需要深入全面学习还需仔细阅读Online Book。虽然是英文的,但是目前介绍最全面的书籍。另外《PowerBuilder 6.0程序设计大全》也有一章是中文入门介绍。 wangsamp.zip 8K 一个使用Windows自带的扫描仪控件的例子,用VB编写的,可以用到PB 中.是微软自Windows97开始附加的一个kodak提供的ImagingControls.并且还带有在线帮助.在windows 97中有它的1.0版本,windows 98是2.1版本.并且在Win97中带有VB制作的例子,只要安装Win97就有,它的存放路径是windows\wangsamp(使用win97朋友不用下载了).此控件有四组功能,分别为:(控件的详细使用方法可以看 windows\help\wangocxd.hlp) kodak 图像编辑控件(ImgEdit.ocx)kodak 图像管理控件(ImgAdmin.ocx)kodak 图像扫描控件(ImgScan.ocx)kodak 图像缩略图控件(ImgThumb.ocx). account.zip 2296K 一个财务系统源代码 pb65ckb2.zip 2004K pb65汉化核心模块 PB701Maint.zip 19144K pb7.1patch pb6v11.zip 73K 例程 query.zip 11K 有一些朋友提出对于记录个数很多的表进行查询的问题,得到的大多数解答是限制返回的结果集大小,例如SQL Server 7.0中可以通过Select Top N..... (N表示返回的记录数),而周游第二天就写了一个例程来说明查询大结果集的问题。采用的方法是使用ID字段,定义游标,能过循环读取并放入到Datawindow中,大家可以下载看看,(注意下载后不要直接运行,要改动Application Open事件中的代码,以便联接到自己所用的数据库)。此例程还可以进一步改进,因为通过游标读取效率不高,需要多次与后台数据库通讯。可以改用Datawindow使用Retrieve来实现,在Where条件中可以加上对于ID的辨断。这两种方法可以反复试验,希望能对大家有所帮助。 fxgold.zip 4197K 是实现多媒体功能的控件,是罕有能兼容PB的多媒体设计控件,带有几十个VB例子.可以改为在PB使用. taskbar.zip 10K 增加了一个PB程序驻留在System Tray区的例子(Win95/98右下角),已经封装成了用户对象,随意挂接,超级好用。(编译成exe后将显示正确图标) pb5zlib.zip 74K 一个简单的压缩/解压缩程序,附有PB例子,可以应付一般的用途。ChgPrn.zip 3K 使用注册表和win.ini文件动态改变当前默认打印机,调用方便,调用完成后自动恢复系统默认打印机,你可以使用此对象在程序中控制,当前打印输出到本地打印机或网络打印机,如果需要更多功能应该使用PowerPrint DLL。 trigger.txt 2K 关于触发器的使用

相关主题
文本预览
相关文档 最新文档