PowerBuilder数据窗口编程技巧
PowerBuilder数据窗口技巧

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数据窗口教程数据窗口是PowerBuilder中最常用的控件之一、它用于显示数据库查询结果,并提供了对此结果进行浏览、修改和删除等操作的功能。
本教程将为您介绍如何在PowerBuilder中使用数据窗口控件。
第一步是创建一个数据窗口。
在PowerBuilder的“对象”菜单下,选择“新建”>“数据窗口”。
在弹出的对话框中,选择所需的数据源和表格,并点击“确定”按钮。
此时,将会出现一个空白的数据窗口设计器。
接下来,将需要显示在数据窗口中的列添加到数据窗口中。
您可以通过拖拽数据库字段或手动添加列的方式进行操作。
在设计器的左侧,您将看到一个“对象树”面板,在这里选择数据窗口对象,并右键单击以添加列。
完成列的设置后,您可以在设计器的页面中放置其他控件,以增强用户界面。
一些常用的控件包括文本框、复选框、下拉列表框等。
您可以通过拖拽控件到数据窗口设计器的页面中进行操作,并根据需要设置其属性。
下一步是设置数据窗口的数据源。
在数据窗口设计器的菜单栏中,选择“数据”>“设置数据源”选项。
在弹出的对话框中,选择所需的数据源和表格,并点击“确定”按钮。
此时,数据窗口将会显示数据源中的数据。
现在,您可以运行应用程序,并查看输出窗口中的结果。
您可以通过点击数据窗口中的列标题对数据进行排序,通过点击数据行进行选择,并通过单击“查阅”按钮在查询结果中进行导航。
如果需要,您还可以在数据窗口中进行增加、修改和删除操作。
通过本教程,您应该已经了解了如何在PowerBuilder中创建和使用数据窗口控件。
数据窗口是PowerBuilder开发中非常重要的一部分,掌握了数据窗口的使用方法,可以提升开发效率,并为用户提供更好的用户界面和交互体验。
希望本教程能对您有所帮助!。
PB数据窗口绝对技巧

PB数据窗口绝对技巧PB数据窗口绝对技巧是指通过使用PowerBuilder开发环境的数据窗口对象实现高效数据处理的技巧。
数据窗口是PowerBuilder中最重要和最常用的对象之一,它可以用于显示和操作数据库中的数据。
下面将介绍一些PB数据窗口的绝对技巧。
1.使用绑定数据窗口:绑定数据窗口是将数据窗口与数据库表绑定在一起,这样可以方便地进行数据的读取、修改和保存操作。
使用绑定数据窗口可以避免手动编写SQL语句或存储过程,大大提高了开发效率。
2.优化数据窗口的性能:数据窗口的性能优化是开发过程中非常重要的一环。
可以通过以下方法来提高数据窗口的性能:-只选择需要的列:只选择需要的列可以减少网络传输的数据量,提高数据检索的速度。
-使用约束和过滤器:可以在数据窗口中使用约束和过滤器来限制返回结果集的大小,进一步提高性能。
-使用预检索:可以在打开数据窗口之前使用预检索功能,先将数据加载到缓存中,减少后续操作对数据库的访问次数。
3.自定义数据窗口的样式:可以通过数据窗口的属性和事件来自定义数据窗口的样式。
例如,可以设置列的显示格式、颜色和字体等属性,还可以通过事件来实现数据窗口的验证和计算逻辑。
4.使用数据窗口的分组功能:数据窗口的分组功能可以将数据按照指定的列进行分组,并对每个分组进行汇总计算。
这样可以方便地进行数据的统计和报表生成。
5.使用数据窗口的嵌套功能:数据窗口可以嵌套在其他数据窗口中,形成复杂的数据结构。
通过使用数据窗口的嵌套功能,可以实现多层次的数据展示和操作,提高用户体验和数据处理的灵活性。
6.使用数据窗口的插入和更新语句:数据窗口可以使用自动生成的插入和更新SQL语句来实现数据的插入和修改操作。
这样可以避免手动编写大量的SQL语句,简化开发过程。
7.使用数据窗口的事务处理:数据窗口的事务处理功能可以保证一系列的操作要么全部成功,要么全部失败。
可以通过使用数据窗口的事务处理功能来实现数据的批量插入和更新,提高数据处理的效率和数据的一致性。
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中定义大于零的值就有定时器(可以精确到毫秒),有了这个定时器就可以实现动画了。
PowerBuilder60个数据窗口技巧

PowerBuilder60个数据窗口技巧60个数据窗口技巧1.如何让存储文件目录的列,显示图片? 答:选择对应的column 的display as picture属性为true2、如何复制grid类型的所选择的行的数据到系统剪切板?答:string ls_selectedls_selected=dw_1.Object.DataWindow.Selected.Dataclipboard(ls_selected)3、如何复制graph风格的datawindow中的图形到剪切板?答:dw_1.clipbord("gr_1")4、如何设置的DW底色?在DW的editsource中改变color的值5、如何将Grid风格改成自由格式?在DW的editsource中将processing=1的1改为06、要新建一个表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的某一列为空?答:string ls_temp[]setnull(ls_temp)dw_1. O B J E C T.columnname.primary.current=ls_temp10、如何设置datawindow的单双行不同颜色间隔?答:在detail带区的color属性表达式中写上if(mod(getrow(),2)=1 ,rgb(255,0,0),rgb(0,255,0)),如果是当前行以第三种颜色表示,表达式如下:if(getrow()=current(),rgb(255,0,0),if(mod(getrow(),2)=1 ,rgb(0,0, 255),rgb(0,255,0)))11、如何获取指定名称的datawindow O B J E C T?答:DWObject ldwo_use,ldwo_abcldwo_use = dw_1.Objectldwo_abc = ldwo_use.__get_attribute("t_1",FALSE)//t_1为datawindow中text对象的名称12、如何使用datawindow的查询模式?答:dw_1.Object.DataWindow.QueryMode='yes'将datawindow改变为查询模式后,接收用户的输入,再使用一下代码获取结果:dw_1.accepttext()dw_1.retrieve()13、如何缩放datawindow的打印大小?答:dw_1. O B J E C T.datawindow.zoom=150 or dw_1. O B JE C T.datawindow.zoom=7514、如何在已过滤后的数据基础上对datawindow进行过滤?答:dw_1.setfilter(dw_1.describe("datawindow.table.filter")+your_joi n+your_new_filter)dw_1.filter()15、如何在datawindow中显示动态时间?答:建立一个计算域,表达式为string(datetime(today(),now()),'yyyy年mm月dd日hh点mm分ss秒'),同时设置datawindow的属性dw_1.Object.DataWindow.Timer_Interval=50016、如何让带用title bar的datawindow控件的标题栏诚活动窗口的颜色?答:外部函数定义:funcation logn SetActiveWindow(long hwnd ) Library "user32.dll"datawindow控件的clicked事件代码:setactivewindow(handle(this))17、如何设置datawindow的当前行指示图标?答:在datawindow中建立一个计算列,expression为'',并将该计算列移动为datawindow的第一个列,在datawindow控件的rowfocuschanged事件中写入代码:SetRowFocusIndicator(hand!)或setrowfucsindicator(p_1)//p_1为窗口上的picture控件名18、如何通过代码打开dddw?答:定义外部函数引用声明SUBROUTINE keybd_event( int bVk, int bScan, int dwFlags, int dwExtraInfo) LIBRARY "user32.dll"代码如下:[constant integer VK_F4 = 115dw_1.SetFocus()dw_1.SetColumn( "dept_head_id" ) //设置当前dddwkeybd_event( VK_F4,0,0,0 ) // 按下F4键keybd_event( VK_F4,0,2,0 ) // 释放F4键19、如何打印datawindow的内容到文件中?答:dw_1. O B J E C T.datawindow.print.fileName ="c:\temp.prn"dw_1.print()20、如何设置dddw的初始值?答:dw_1. O B J E C T.columnname.Initial="your_initial_value"21、如何只显示不同的数据?答:dw_1.filter("isnull(columnname[-1]) and columnname<>columnname[-1]")dw_1.filter()22、如何让带有title bar的datawindow不可以移动?答:在datawindow的自定义事件ue_nchittest(pbm_nchittest)中写入如下代码:return 123、如何在N-UP显示风格中建立基于第N栏中的列的计算列?答:如column有两列,number和price ,并显示为两栏,则第一栏的cost计算列的expression为number*price,第二栏的cost_1计算列的expression为number[1]*price[1]24、如何清空ddlb或edit.codetable中项目?答:dw_1.Object.columnname.Values=""25、如何实现指定的column的字体旋转90度?答:dw_1. O B J E C T.columnname.font.Escapement ="900"26、如何获取datawindow的sql代码?答:可以通过以下四种方法获取sql代码:string szselectszselect=dw_1.describe("datawindow.table.select")szselect=dw_1.describe("datawindow.table.sqlselect")szselect=dw_1.describe("datawindow.table.select.attribute") szselect=dw_1.getsqlselect()27、如何获取datawindow对象占有的虚拟存储的容量?答:使用datawindow.storage属性举例:在datawindow控件的retrieverow事件中,写如如下代码:long lstoragelstorage=long(dw_1. O B J E C T.datawindow.storage)if lstorage>50000 then dbcancel()28、如何控制打印横向:dw_control. O B J E C T.datawindow.print.orientation= 129、如何进行预览:dw_control. O B J E C T.datawindow.print.preview = "yes"30、如何连续在同一张纸打印两个数据窗口?答:dw_1. O B J E C T.datawindow.print.filename="temp.prn"dw_2. O B J E C T.datawindow.print.filename="temp.prn"dw_1.print()dw_2.print()31、如何将pb9.0 的datawindow转化为pb 8.0版本的datawindow?答:edit source 将release 9;改为release 8;并删除以下内容:print.printername=""print.canusedefaultprinter=yesprint.cliptext=no print.overrideprintjob=nohidegrayline=noencodeselflinkargs="1"export.xml(headgroups="1" includewhitespace="0" metadatatype=0 savemetadata=0 )import.xml()export.pdf(method=0 distill.custompostscript="0" xslfop.print="0" )32、如何设置datawindow分组后每个分组中的记录号?答:建立一个计算列,expression为getrow() - first(getrow() for group 1)+133、如何实现在datawindow中只有新增的行,才可以编辑?答:在所有的column的protect属性表达式中写入以下表达式:if(isrownew(),'0','1')34、保存datawindow数据到excel中// ... Init docname// ... GetFileOpenName or any other methodif dw_1.SaveAs(docname, HTMLTable!, True) = -1 thenMessageBox("Warning", "Unable to export data. Error writing to file!", Exclamation!)returnend if// Convert HTML file to Excel native formatOLEObject excelexcel = CREATE OLEObjectif excel.ConnectToObject(docname) = 0 thenexcel.application.DisplayAlerts = FALSEexcel.application.workbooks(1).Parent.Windows(excel.applic ation.workbooks(1).Name).Visible = Trueexcel.application.workbooks(1).saveas(docname, 39)excel.application.workbooks(1).close()end ifDESTROY excel// done35、除了循环以外,有没有更好的方法统计数据窗口中处于选中状态的行数?一般习惯于使用循环来统计数据窗口中处于选中状态的行数,有没有更好的方法?其实此问题在应用上用处不大,讨论一下,活跃一下思维还是有好处的。
PB获取或操作数据窗口语句的方法

PB获取或操作数据窗口语句的方法
PB(PowerBuilder)是一种用于构建企业级应用程序的集成开发环境(IDE),其中包含了用于操作数据窗口的语句和方法。
以下是获取或操
作数据窗口的一些常用语句和方法:
1.获取数据窗口控件对象:
dw_control = dw_ancestor.Object.dw_controlname
这种方法可以通过数据窗口对象的祖先对象获取数据窗口控件的引用,从而进行后续的操作。
2.设置数据源:
dw_control.SetTransObject(SQLCA)
这个方法会将数据窗口的数据源设置为指定的事务对象(通常是SQLCA对象)。
3.检索数据:
dw_control.Retrieve
这个方法会执行数据窗口的检索功能,从数据源中获取数据并显示在
数据窗口中。
4.更新数据:
dw_control.Update
这个方法会将数据窗口中修改的数据更新到数据库中。
5.取消修改:
dw_control.Reset
这个方法会取消对数据窗口的所有修改,恢复到最后一次检索或更新的状态。
6.设置过滤条件:
dw_control.SetFilter(filter_expression)
这个方法可以设置数据窗口的过滤条件,只显示满足条件的记录。
7.查找记录:
dw_control.Find(filter_expression)
这个方法可以在数据窗口中查找满足条件的记录,并将其选中。
以上是一些常用的获取或操作数据窗口语句和方法,使用这些语句和方法可以方便地对数据窗口进行管理和控制。
PB的数据窗口操作

PB的数据窗口操作PB(PowerBuilder)是一种基于面向对象的集成开发环境(IDE),主要用于构建企业级应用程序。
在PB中,数据窗口是一项非常重要的功能,可以用于对数据的处理、展示和修改。
下面将从数据窗口的基本操作、高级特性和数据窗口设计原则等方面,详细介绍PB的数据窗口操作。
一、数据窗口的基本操作1. 创建数据窗口:在PB中,可以通过向导或手动创建数据窗口。
创建数据窗口是通过选择数据源(数据库表、视图或存储过程)、选择数据窗口类型(Grid、Tabular等)和设置窗口布局等步骤完成的。
2.数据绑定:在数据窗口中,可以通过数据绑定将数据源与数据窗口中的控件关联起来。
通过设置数据绑定属性,可以实现数据的读取、展示和修改等功能。
3.数据检索:使用数据窗口可以方便地进行数据检索。
通过设置查询条件、排序方式和数据过滤等属性,可以按照需求从数据库中检索数据,并在数据窗口中显示出来。
4.数据更新:除了展示数据,数据窗口还可以用于数据的更新。
通过设置数据窗口的更新属性,可以实现数据的插入、修改和删除等操作。
同时,PB还提供了事务管理和数据验证等功能,确保数据的完整性和一致性。
5.数据导航:在数据窗口中,可以轻松地实现数据的导航功能。
通过设置数据窗口的导航属性,可以方便地浏览数据,并进行上一条、下一条、第一页和最后一页等操作。
6.数据格式化:PB提供了丰富的数据格式化选项,可以对数据窗口中的数据进行格式化和显示。
例如,可以设置日期格式、货币格式和数值格式等,以便更好地展示和分析数据。
二、数据窗口的高级特性1.动态数据窗口:PB允许动态创建和操作数据窗口。
通过使用动态数据窗口,可以在运行时动态改变数据窗口的结构和属性。
这对于动态查询和灵活的数据展示非常有用。
2.嵌套数据窗口:PB支持嵌套数据窗口的使用。
通过将一个数据窗口嵌套在另一个数据窗口内部,可以实现复杂的数据关联和显示。
例如,可以在父数据窗口中显示子数据窗口的数据。
powerbuilder级联下拉式数据窗口的实现方法

powerbuilder级联下拉式数据窗口的实现方法PowerBuilder是一款功能强大的开发工具,它可以帮助开发人员快速构建各种应用程序。
其中,级联下拉式数据窗口是PowerBuilder中非常重要的一个功能,它可以让用户在选择一个下拉列表中的选项后,自动更新另一个下拉列表中的选项。
下面将介绍PowerBuilder级联下拉式数据窗口的实现方法。
一、创建数据窗口首先,我们需要创建一个数据窗口,用于显示级联下拉列表的数据。
在数据窗口中,我们需要添加两个下拉列表框,一个用于显示第一级数据,另一个用于显示第二级数据。
在下拉列表框的属性中,我们需要设置数据源和显示字段。
二、设置级联关系接下来,我们需要设置两个下拉列表框之间的级联关系。
在第一个下拉列表框的Clicked事件中,我们需要添加以下代码:dw_1.SetTransObject(SQLCA)dw_1.Retrieve()其中,dw_1是我们创建的数据窗口的名称,SQLCA是PowerBuilder 中的一个全局变量,用于执行数据库操作。
这段代码的作用是在第一个下拉列表框中选择一个选项后,自动更新第二个下拉列表框中的选项。
三、设置过滤条件最后,我们需要设置第二个下拉列表框的过滤条件,以便只显示与第一个下拉列表框中选择的选项相关的数据。
在第二个下拉列表框的Clicked事件中,我们需要添加以下代码:dw_2.SetTransObject(SQLCA)dw_2.SetFilter("field_name = '" +dw_1.GetItemString(dw_1.GetRow(), "field_name") + "'")dw_2.Retrieve()其中,dw_2是我们创建的数据窗口的名称,field_name是我们在数据窗口中设置的字段名称。
这段代码的作用是根据第一个下拉列表框中选择的选项,设置第二个下拉列表框的过滤条件,并更新第二个下拉列表框中的数据。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PowerBuilder数据窗口编程技巧
PowerBuilder取得巨大成就的原因就是有功能强大和灵活多变的Datawindow对象,本人用PowerBuilder开发过一段时间后,总结出一些技巧,以供广大的PB开发者借鉴使用。
1、如何创建一个具有逐渐递增求和功能的报表,如下形式:
Quantity Running Total
5,000 5,000
2,500 7,500
3,000 10,500
12,000 22,500
对于Running Total列,我们可使用计算列:CumulativeSum (Quantity for all),即可达到逐渐递增求和的功能。
2、数据窗口的数据送缓冲区之前确认的四个步骤
如果我们不清楚数据窗口中的数据在送入缓冲区之前所发生的一切,在保存数据时就不明白错误发生的原因,找不出错误的根源。
PB首先判断数据类型是否正确。
如不正确则触发ItemError 事件。
接着判断数据是否符合有效性规则。
如不符合有效性规则,同样触发ItemError事件。
然后判断是否有数据被改动。
最后判断数据是否通过ItemChanged事件,如果数据和ItemChanged相斥,将触发ItemError事件。
3、如何在DataWindow中用数据类型为Datetime的列为条件进行查寻
(1)。