PB中下拉数据窗口带参数应用
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中定义大于零的值就有定时器(可以精确到毫秒),有了这个定时器就可以实现动画了。
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。
在获取了子数据窗口的引用之后,就可以捡索子数据窗口中的数据了。
但是,检索子数据窗口的情况比较多,并且也有多种方法。
**保证子数据窗口中的数据更新用户使用下拉数据窗口录入数据时,其中的数据并不一定有用户需要的。
在某些情况下不允许用户再输入其他值,否则可能造成数据的不一致性,这时就可以不再编写其他的脚本。
但在允许用户录入时,就需要把用户录入的数据保存在子数据窗口对应的数据表中,以便以后数据录入时不再重复输入该数据。
这时就应该编写脚本保存该数据了。
**检索子数据窗口在应用中,对子数据窗口的编程不是检索数据,就是更新其中的数据。
pb12 数据窗口 检索参数
pb12 数据窗口检索参数1.引言1.1 概述数据窗口(DataWindow)是PowerBuilder中最重要的控件之一,它作为一种灵活且功能强大的表格控件,广泛应用于企业级软件开发中。
数据窗口可以呈现数据库中的数据,并且具备快速检索和编辑数据的能力,使开发人员能够方便地操作和管理数据。
数据窗口具有以下特点:1. 数据绑定:数据窗口与数据库之间可以进行直接的绑定,通过设置连接属性、SQL语句或存储过程,可以轻松地将数据窗口与数据库进行关联,实现数据的绑定和展示。
2. 数据编辑:数据窗口提供了丰富的数据编辑功能,开发人员可以根据业务需求设置单元格的可编辑性,轻松实现数据的新增、修改和删除操作。
3. 数据格式化:数据窗口支持对数据进行格式化,包括设置日期时间格式、货币格式、数值格式等,使数据呈现更加直观和易读。
4. 数据校验:数据窗口可以对用户输入的数据进行校验,确保数据的准确性和完整性。
通过设置校验规则,可以防止用户输入非法或不符合约束条件的数据。
5. 数据检索:数据窗口内置了强大的数据检索功能,可以根据设置的检索参数,快速地过滤和检索出符合条件的数据集,提高数据的查询效率。
2.1.1 概述部分简要描述了数据窗口的定义、特点和功能,下面将进一步介绍数据窗口的使用场景。
1.2 文章结构本文将主要介绍pb12 数据窗口的检索参数。
文章的结构如下:2. 正文部分将分为两个主要章节,分别是数据窗口和检索参数。
2.1 数据窗口章节将包含以下内容:2.1.1 定义和特点:介绍数据窗口的概念和特点,以及它在PowerBuilder 12中的应用和功能。
2.1.2 使用场景:讨论数据窗口在实际开发中的常见应用场景,并通过示例说明其使用方法和效果。
2.2 检索参数章节将包含以下内容:2.2.1 定义和作用:解释检索参数的含义和作用,以及它们在数据窗口中的具体应用。
2.2.2 常见的检索参数:列举常见的检索参数,并讨论它们的用途和配置方法。
PB中下拉数据窗口带参数应用.
PB 中下拉数据窗口带参数应用在数据输入时, 当用到下拉列表时, 会发现有些数据是和别的数据相关的, 这时我们会希望过滤掉那些不相关的数据。
例如生成一个入库单, 某种物料有多个供应商, 我们要根据物料来过滤掉和这个物料不相关的供应商,这样会加快检索和输入的速度。
入库单表:billrec1. 以 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(0idwc_child.settransobject(SQLCAthis.of_settransobject(SQLCAthis.insertrow(04.在 dw_1的 itemchanged 事件中编写以下脚本:long ll_getcolumnll_getcolumn = this.getcolumn( //获得当前列choose case ll_getcolumncase 7 //假设 item_id列是第 7列dw_1.accepttext(is_id = dw_1.getitemstring(row,7 //获得物料代码idwc_child.retrieve(is_id //检索替代供应商end choose这样在输入不同的物料时,会像下图那样,只列出相关的供应商。
在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 字段的内容。
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中定义大于零的值就有定时器(可以精确到毫秒),有了这个定时器就可以实现动画了。
PB中下拉列表使用的若干技巧
PB中下拉列表使用的假设干技巧于红聂尚宇摘要对PB中下拉列表的使用方法进行了研究,并提出了几种使用下拉列表的实现方法,实践说明这些方法具有简单实用的特点。
关键词下拉列表;动态;控件;事件;Some Skills in the Use of DDLB of PBYu Hong Nie ShangyuDepartment of Electronic Engineering, DFUAbstract The use of DDLB in PB is studied and some skills are proposed. The results show that these skills are simple and practical.Key words DDLB; dynamic; control; event随着科学技术的不断发展,电脑已经应用于社会的各个领域,相应的管理软件的编制工作显得尤为重要。
现有的编程工具中,PowerBuilder 是数据库管理软件设计比较理想的工具,但如何合理地选用控件和灵活地使用每一个控件,以充分发挥PB的优势,是人们在编程过程中常遇到的难题。
作者对PB中的控件之一——下拉列表的使用[1]进行了研究,并提出几个灵活使用下拉列表的方法。
1 下拉列表及其相应的事件①下拉列表是在窗口中定义的一个控件,与之相应的事件如下表所示:件,还会触发Modified事件。
2 动态使用下拉列表传统的下拉列表使用是静态的,它在一定程度上满足了编程的需要,但是不能满足所有需要。
例如,有时希望下拉列表中的选项在程序运行过程中可以变化,这用静态下拉列表定义选项是不能实现的,这就促使人们去思考如何使用动态下拉列表。
有两种情况需要使用动态下拉列表。
1〕下拉列表中的选项与数据库中某列的内容相关联②实际应用中,在对数据库表中的数据按名称进行查询时,为了减少输入量,可以将库中某列的内容〔如单位名称〕列在下拉列表中供用户选择,这样既可以保证选中的项目一定是库中的项目,而且不用输入汉字;又使下拉列表的使用具有一定的灵活性,动态下拉列表选项确实定必须在下拉列表被使用之前进行,可以在下拉列表所在窗口的Open事件中确定,也可以在下拉列表的Getfocus事件中确定,相应的script为string id,icint i-op=1declare c1 cursor forselect hotelid from hotelid-dangan using SQLCA;open c1;fetch c1 into: id;do while sqlca.sqlcode=0select p1602 into :ic from p16 where p1601=:id using sqlca;if finditem(ddlb-1,ic,1)=-1 thenddlb-1.insertitem(ic,+i-op)i-op=i-op+1end iffetch c1 into :id;loopclose c1;其中,下拉列表中的项目取自数据库表hotelid-dangan 的hotelid 列所对应的p16表中的p1602(即单位名称)。
PB数据窗口教程
Powerbuilder创建数据窗口规范与注意事项导言:数据窗口是powerbuilder中一个最重要的控件,且是powerbuilder独有的一个控件,他存在于用户与数据库之间,能够方便的帮助用户进行sql语句对数据库进行操作,使开发人员能够节约大量时间与精力,然而相对数据窗口的强大,powerbuilder软件本身就显得略有不足,相对其他开发软件而言会有更多的bug。
下面就数据窗口的创建与标准布局做一些讲解。
1.新建数据窗口时常见的处理流程a)新建数据窗口1)选择表和要编辑、要显示的字段。
2)设置检索参数3)设置where条件b)显示处理(不分先后)1)去掉无需编辑、无需显示的,但要存储、处理数据的字段2)调整Header、Detail区域字体大小3)设置显示格式format掩码1.直接掩码写死2.根据条件设置掩码c)输入控制1)设置字段是否可以编辑1.去掉无需编辑、需要显示的字段的焦点2.根据条件设置字段是否可以编辑2)设置字段的编辑风格1.edit标签页下style typea)editb)editmaskc)radiobuttonsd)checkboxe)dropdowndwf)dropdownlistbox3)设置字段掩码(如果无显示掩码,则以编辑掩码显示)1.数值(“0.00”、“###0.00”)2.日期(“yyyy-mm-dd”、“yyyy-mm-dd hh:mm:ss”)d)设置数据窗口的更新属性一、创建powerbuilder数据窗口时的注意事项1.简化数据窗口输出列在powerbuilder中,数据传输的流量问题是值得注意的一个问题,每一个数据从数据库到数据窗口都是需要流量作为代价的。
因此,在创建数据库的时候,能够尽可能的少引入列是一个应当遵守的原则。
理论上,能够不读取的字段就不要将其加入数据窗口中,以减少网络传输。
2.列visible属性设为false后改回自动移动到最后的处理方法。
pb数据窗口,sum的用法 -回复
pb数据窗口,sum的用法-回复PB数据窗口及其sum函数的用法数据窗口(DataWindow)是PowerBuilder(PB)开发工具中一种用于显示数据库中数据的窗口控件。
它可以与各种关系数据库进行交互,并提供了多种数据操作功能,如查询、排序、过滤和汇总等。
其中,sum函数是数据窗口中用于计算某一列数据之和的内置函数。
在本文中,我们将从基本概念开始,一步一步地介绍PB数据窗口及其sum 函数的用法。
第一部分:PB数据窗口基本概念PB数据窗口是PB开发工具中最重要的控件之一。
它可以显示数据库表的数据,并提供了丰富的交互功能。
数据窗口由多个列组成,每列对应数据库表中的一个字段。
它可以从单个表或多个表中检索数据,并支持对数据进行增删改查等操作。
首先,我们需要创建一个数据窗口对象。
在PB开发环境中,我们可以通过拖拽数据库表到PB工作区或使用数据窗口插入向导来创建一个新的数据窗口。
创建完成后,我们可以在数据窗口的属性中设置与数据库连接的相关信息,如数据库类型、用户名、密码等。
在数据窗口的设计视图中,我们可以根据需要添加、删除和调整列的位置。
每一列都有其对应的数据类型和属性,如文本、数值、日期等。
我们还可以设置列的显示格式、宽度和标题等。
接下来,我们需要配置数据窗口的数据源。
通过数据窗口插入向导,我们可以选择连接到哪个数据库以及查询哪个表。
我们还可以为数据窗口设置过滤条件、排序方式和自定义检索行数等。
第二部分:sum函数的使用sum函数是PB数据窗口中用于计算某一列数据之和的内置函数。
它可以在数据窗口的计算列或根据需要的事件中使用。
在数据窗口设计视图中,我们可以在计算列中使用sum函数。
首先,我们需要选择一个列,并为该列设置一个标题和计算表达式。
在计算表达式中,我们可以使用sum函数来计算某一列数据的和。
例如,我们可以创建一个计算列,用于计算销售额的总和。
在计算列的计算表达式中,我们可以使用以下语法来使用sum函数:sum(column_name)。
pb 数据窗体 参数
pb 数据窗体参数
E在PowerBuilder(PB)中,数据窗体(DataWindow)的参数传递通常涉及使用函数如OpenWithParm、CloseWithReturn等。
这些函数在进行窗口操作(打开或关闭)时,会将参数存入Message消息对象中。
当传递参数给数据窗体时,这些参数的数据类型(如数值、字符串或PB对象等)决定了它们在Message 对象中的存储方式。
例如,对于数值类型的参数,它们会保存在Message.DoubleParm属性中;对于字符串类型的参数,会保存在Message.StringParm属性中;而对于PB对象类型的参数,则会保存在Message.PowerObjectParm属性中。
如果需要传递多个参数,可以通过定义结构变量来包含这些参数,然后将这个结构变量作为参数传递给数据窗体。
在数据窗体的打开事件中,可以通过访问Message对象的相应属性来获取这些参数的值。
具体的参数传递方式会根据实际应用的需求和场景而有所不同。
因此,在实际开发中,需要根据具体的需求和场景来选择合适的参数传递方式,并确保参数的正确传递和处理。
pb数据窗口设置操作
pb数据窗⼝设置操作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中定义⼤于零的值就有定时器(可以精确到毫秒),有了这个定时器就可以实现动画了。
pb数据窗口内嵌数据窗口
pb数据窗口内嵌数据窗口在PB(PowerBuilder)开发中,数据窗口是一个重要的控件,用于显示和编辑数据库中的数据。
数据窗口内嵌数据窗口是指在一个数据窗口中嵌入另一个数据窗口,实现数据的嵌套显示和关联编辑,为开发人员提供了更灵活的数据展示和处理方式。
本文将介绍PB数据窗口内嵌数据窗口的使用方法和注意事项。
一、数据窗口内嵌数据窗口的概念和作用数据窗口内嵌数据窗口是一种多层次的数据窗口结构,可以在一个主数据窗口中嵌套显示其他子数据窗口。
主数据窗口可以是一个查询结果集,而子数据窗口可以是主数据窗口中的一个或多个子查询结果集。
通过内嵌数据窗口,可以实现复杂的数据展示和编辑需求。
内嵌数据窗口主要有以下作用:1. 数据关联:通过在主数据窗口和子数据窗口之间建立关联,实现数据的级联更新。
2. 多表展示:将多个相关的数据表通过内嵌数据窗口一起展示,方便用户查看和编辑相关信息。
3. 数据嵌套:在一个数据窗口中嵌套显示其他数据窗口,形成层次结构,提供更灵活的数据展示方式。
二、数据窗口内嵌数据窗口的配置步骤在PB中配置数据窗口内嵌数据窗口需要以下几个步骤:1. 创建主数据窗口:首先,创建一个主数据窗口,作为内嵌数据窗口的容器。
可以根据需要定义数据源和数据对象,设置数据窗口的外观样式。
2. 创建子数据窗口:在主数据窗口中创建子数据窗口。
子数据窗口可以是一个新的数据窗口对象,也可以是一个已有的数据窗口对象。
3. 定义关联:在主数据窗口中,设置与子数据窗口之间的关联规则。
可以通过设置共享数据源、共享变量等方式来建立关联。
4. 设置显示属性:设置子数据窗口在主数据窗口中显示的方式。
可以设置子数据窗口的位置、大小、可见性等属性。
5. 运行测试:编译和运行主数据窗口,查看内嵌数据窗口是否正确显示和关联。
三、注意事项和常见问题在使用PB数据窗口内嵌数据窗口时,需要注意以下事项和常见问题:1. 数据源和查询条件:主数据窗口和子数据窗口应该使用相同的数据源,以确保数据的一致性。
PB中相关联下拉数据窗口的实现
PB中相关联下拉数据窗口的实现近日在开发过程中遇到使用下拉数据窗口的情况:数据表Data中有二列Dept_id(主管部门编码)、Unit_id(企业编码)的取值分别来自数据表Dept(主管部门)及Unit(企业基本情况),且要求选择某一主管部门后,能将该主管部门的所有企业显示出来以便选择。
有关数据表的结构如下(已简化):表名字段名类型长度关键字含义DataDept_idChar5否主管部门编码Unit_idChar9是企业编码NumNumeric7(无小数) 否上交金额DeptIdChar5是主管部门编码NameChar15否主管部门?/TD>UnitIdChar7是企业编码NameChar30否企业名称Dept_idChar5否主管部门编码为实现这些要求,可将Data表的2个字段Dept_id、Unit_id设计为2个相关联的下拉数据窗口,关键是如何将Dept_id的当前选定值传递给Unit_id以使其仅显示相应的主管部门的企业清单。
为此,本人查阅了许多有关书刊及有关网站的相关资料,找到两种解决方法:设置检索参数及使用动态SQL语句。
这两种解决方法的共同关键是使用GetChild()函数及DataWindowChild型变量。
许多资料称设置检索参数是最简单、最方便的有效解决方法,也提出了几种隐藏系统自动弹出的“Specify Retrieval”对话框的方法。
但令人遗憾的是本人竭尽所能也未能如愿(主要是无法隐藏系统自动弹出的“Specify Retrieval”对话框)。
因此开始考虑使用动态SQL语句。
经过一番努力,终于比较满意地实现了设计要求。
具体做法如下:1、首先创建应用dddw,有关操作按提示即可。
(PowerBuilder8.0中请先创建WorkSpace dddw.pdw,其他操作基本同PowerBuilder7.0)2、创建数据窗口dddw_dept:Grid、Quick Select、表Dept的所有字段,最好不要定义Where 子句以免后面编程复杂化,能将header部分去掉最好(可使显示简洁)。
在PB中巧用下拉数据窗口
在PB中巧用下拉数据窗口PowerPB提供了下拉数据窗口(DropDown DataWindow),使数据窗口更灵活、更方便。
在用数据窗口进行数据录入时,经常要用到代码录入,即对经常输入的某些值设置代码,录入时直接录入代码即可。
例如,有两个表,主表main_table和代码表code_table,录入时主表中需要代码表中的数据,但不允许录入不在代码表中的数据。
下面介绍如何使用下拉数据窗口实现上述功能。
静态设计下拉数据窗口首先对主表和代码表设计两个数据窗口dw_main和dw_code,其中dw_main包括字段id、na me、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_inpu t上建立一个数据窗口的控件dw_1,其属性DataWindow Object Name设为dw_main,并在w_inpu t的open事件中写入下列语句:dw_1.SetTransObject(SQLCA)dw_1.Retrieve()这样,在执行此窗口时,在unit字段上就会出现一个下拉列表框,列出了表code_table中所有的内容,用户可以用鼠标选择录入。
PB用户对象技术在数据窗口中的应用
PB 用户对象技术在数据窗口中的应用Appl ica tion of PB User Object Techn ique i n Da ta W i ndow王 虹(大连理工大学 大连 116024)【摘 要】 根据实际的开发要求,利用PB 所提供的用户对象技术实现了数据窗口中数据列的多项输入、修改及删除。
简要介绍了用户对象技术,并详细描述了该方法的具体实现过程。
【关键词】 用户对象,数据窗口,数据列,下拉列表控件,PBABSTRACT U ser object technique from PB is used to realize m ultinom inal input ,co rrecti on and deleti on of data co lum n in data w indow .U ser object technique is described si m p ly and mo re descri p ti on about i m p lem entati on of the m ethod is given .KEYWOR D S user object ,data w indow s ,data co lum n ,dropdow n list contro l unit ,PB Pow erbu ilder 作为众多数据库前端开发工具之一,以其友好的界面和完善的功能而深受广大开发人员的青睐。
尤其是它所提供的强大的数据窗口(dataw indow )功能,使得对数据库的各种操作如录入、查询、删除、排序等都变得非常简单、快捷。
但是数据窗口也有其局限性。
在利用数据窗口录入数据时,一个数据列只允许输入一个数据值。
但作者在开发大连港香炉礁港口费收管理系统时,由于其业务需要,要求对同一收费项目允许录入多笔数据并分别显示出来以便修改,最后将这些数据的总和作为该项目的值存入数据库。
--PowerBuilder使用技巧集--PB6_0的下拉列表框功能增强(精)
-->PowerBuilder使用技巧集-->PB 6.0 的下拉列表框功能增强后一页前一页回目录回首页PB 6.0 的下拉列表框功能增强电子工业部第二研究所侯一雪---- Power Builder中提供的许多工具对象和函数,功能强大、使用方便,使开发人员的工作更加灵活、简洁。
同时,可以使用特定数据库管理系统专用的SQL语句,大大增强了程序操纵和访问数据库的能力。
但在使用中,笔者发现PB的下拉列表框(DropDownListBox)的Item在取固定值时较为方便,而需从数据表中取变化的值则相对较烦琐,经笔者分析,编制如下函数,实现了上述功能,希望给广大PB编程爱好者一点参考。
---- 具体实现步骤:---- 1.新建函数DDLB_FROM_TAB,参数分别如下:参数类型传递方式说明tab_name string value 表名col_name string value 待取值列名filt_colname string value 条件列名filt_ch string value 比较符filt_value string value 条件值ddlb_name dropdownlistbox value 下拉列表框名---- 2.添加函数脚本:string ls_add_string, ls_select_stringint li_posDECLARE dyn_cursor DYNAMIC CURSOR FOR sqlsa;ls_select_string = "SELECT " + col_name + "FROM " + tab_name + " WHERE "+ filt_colname + filt_ch + filt_value//此处需注意条件字段类型匹配问题PREPARE sqlsa FROM :ls_select_string using sqlca;OPEN DYNAMIC dyn_cursor;if sqlca.sqlcode < 0 thenMessageBox("数据库错误!",sqlca.sqlerrtext)return sqlca.sqlcodeend ifddlb_parm.SetRedraw(false)ddlb_parm.Reset( )Do While sqlca.sqlcode = 0Fetch dyn_cursor into :ls_add_string;if sqlca.sqlcode = 0 thenmessagebox("",ls_add_string)ddlb_parm.AddItem(ls_add_string)elseif sqlca.sqlcode < 0 thenMessageBox("数据库错误!",sqlca.sqlerrtext)return sqlca.sqlcodeelseexitend ifLoopddlb_parm.SetRedraw(true)Close dyn_cursor;return 0---- 3.程序调用自定义函数。
在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 字段的内容。
在PB中使下拉列表框可以和数据关联
在PB中使下拉列表框可以和数据关联在从事使用PB进行数据库开发的过程中,常常碰到要使用列表框来选择数据,但是普通的下拉列表框并没有提供和数据相连接的方法,而使用数据窗口的子下拉列表框来代替又显得有些别扭.下面介绍一种好看又好用的方法.可能大家已经想到了吧,使用指针把要连接的数据一条一条地从select 语句的查询结果中fetch 出来,然后再把数据additem到下拉列表框中去.虽然这也是一种可行的方法,但是他的速度很不能令人满意,太受数据量的影响.我们可以利用PB 最推崇的数据窗口技术作为数据库和下拉列表框连接的桥梁,这种方法即方便快速又安全可靠.好了,下面制作的下拉列表框,在完成之后会带给你许多意想不到的方便!一. 打开PB的"select user object"画笔,选择<new>, 在"new user object"中选择"Visual"类的"Standard"项并按下<ok>, 在弹出来的"Select Standard Visual Type"对话框中选择列表中的"dropdownlistbox"项并按下<ok>. 接着加入一些实例变量,选择"Declare"菜单项的"Instance Variables.."加入变量的声明: datastore ids_user int il_row 并按下<ok>.我们要对新的对象进行一些限制,在对象的"constructor"事件中加入程序:sorted = false //这句非常必要reset()二. 好了,现在到了最关键的时候了,我们要把数据检索出来放到ids_user变量里.选择菜单"Declare"项的"User Object Function",在弹出来的对话框中按下<new>新建一个对象函数命名为:init参数有一个:sqlstr string返回值为整型:integer现在我们需要动态地创建datastore在init函数中写下://integer init(sqlstr string) 开始long ll_rowcountlong ll_rowstring ls_sqlstring errorsstring ls_returnids_user = create datastore//根据sql语句产生数据窗口ls_return = sqlca.SyntaxFromSQL(sqlstr, 'style(type=grid)',errors)//sql语句有错误if len(errors) > 0 thenmessagebox('错误', errors)return -1end if//根据语法动态创建数据窗口ids_user.create(ls_return)ids_user.settransobject(sqlca)ll_rowcount = ids_user.retrieve()//无数据返回if ll_rowcount=0 thenreturn -1end if//把数据插入控件for ll_row = 1 to ll_rowcountthis.additem(string(ids_user.Object.Data[ll_row,1]))next//成功返回0return 0//integer init(sqlstr string) 结束现在下拉列表框已经能显示数据了,但是我们在选择数据的同时往往需要的不是它显示出来的值,比如显示的是人员姓名,而我们需要的是工号,难道再使用select语句把需要的数据检索出来吗?有了下面的程序,我们就不必头痛了.重复上面建立函数的步骤,新建一个名为getdata的user object函数, 返回值为"any"并在函数中写下程序://any getdata() 开始any la_returnlong ll_rowif text = '' thenreturn ''end if//没有选择或没有检索到数据if ids_user.rowcount() = 0 or il_row = 0 thenreturn ''end if//在缺省情况下返回第二列的数据la_return = ids_user.Object.data[il_row, 2]return la_return//andy getdata() 结束现在还不能返回正确的数据,还需要一个函数setidx(idx int)程序如下://setidx(idx int) 开始il_row = idx//setidx(idx int) 结束现在这个user object已经完成了,我们来做一下试验试一试.新建一个应用app_test,一个窗口w_main,按照刚才的方法创建一个user object:uo_dbdropdownlistbox,放入w_main中在app_test的open事件中写下连接数据库的语句并加上open(w_main) 在w_main的open事件中写下:int li_resultli_result = uo_1.init('select name, id from sysobjects')在uo_1的selectionchanged事件中写下:setidx(index)messagebox('提示', "看" + string(this.getdata()))这时我们的用户对象已经能根据选择的name返回相应的id了.。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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
这样在输入不同的物料时,会像下图那样,只列出相关的供应商。