DataWindow高级应用
pb中datawindow常用技巧
pb中datawindow常用技巧一(2009-04-16 17:09:07)转载▼标签:分类:PowerBuilder杂谈pb中datawindow常用技巧一1、如何让存储文件目录的列,显示图片?答:选择对应的column的display as picture属性为true2、如何复制grid类型的所选择的行的数据到系统剪切板?答:string ls_selectedls_selected=dw_1.Object.DataWindow.Selected.Dataclipbord(ls_selected)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.object.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、如何获取指定名称的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的打印大小?答:dw_1.object.datawindow.zoom=150 or dw_1.object.datawindow.zoom=7513、如何在已过滤后的数据基础上对datawindow进行过滤?答:dw_1.setfilter(dw_1.describe("datawindow.table.filter")+your_join+you r_new_filter)dw_1.filter()14、如何在datawindow中显示动态时间?答:建立一个计算域,表达式为string(datetime(today(),now()),'yyyy年mm 月dd日 hh点mm分ss秒'),同时设置datawindow的属性dw_1.Object.DataWindow.Timer_Interval=50015、如何让带用title bar的datawindow控件的标题栏诚活动窗口的颜色?答:外部函数定义:funcation logn SetActiveWindow(long hwnd ) Library "user32.dll" datawindow控件的clicked事件代码:setactivewindow(handle(this))16、如何设置datawindow的当前行指示图标?答:在datawindow中建立一个计算列,expression为'',并将该计算列移动为datawindow的第一个列,在datawindow控件的rowfocuschanged事件中写入代码:SetRowFocusIndicator(hand!)或setrowfucsindicator(p_1)//p_1为窗口上的picture控件名17、如何通过代码打开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键18、如何打印datawindow的内容到文件中?答: dw_1.object.datawindow.print.fileName ="c:\temp.prn"dw_1.print()19、如何设置dddw的初始值?答:dw_1.object.columnname.Initial="your_initial_value"20、如何只显示不同的数据?答:dw_1.filter("isnull(columnname[-1]) and columnname<>columnname[-1]") dw_1.filter()21、如何让带有title bar的datawindow不可以移动?答:在datawindow的自定义事件ue_nchittest(pbm_nchittest)中写入如下代码:return 122、如何在N-UP显示风格中建立基于第N栏中的列的计算列?答:如column有两列,number和price ,并显示为两栏,则第一栏的cost计算列的expression为number*price,第二栏的cost_1计算列的expression为number[1]*price[1]23、如何清空ddlb或edit.codetable中项目?答:dw_1.Object.columnname.Values=""24、如何实现指定的column的字体旋转90度?答:dw_1.object.columnname.font.Escapement ="900"25、如何获取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.object.datawindow.storage)if lstorage>50000 then dbcancel()28、如何连续在同一张纸打印两个数据窗口?答:dw_1.object.datawindow.print.filename="temp.prn"dw_2.object.datawindow.print.filename="temp.prn"dw_1.print()dw_2.print()29、如何设置datawindow分组后每个分组中的记录号?答:建立一个计算列,expression为 getrow() - first(getrow() for group 1)+130、如何实现在datawindow中只有新增的行,才可以编辑?答:在所有的column的protect属性表达式中写入以下表达式:if(isrownew(),'0','1')31、除了循环以外,有没有更好的方法统计数据窗口中处于选中状态的行数?一般习惯于使用循环来统计数据窗口中处于选中状态的行数,有没有更好的方法?其实此问题在应用上用处不大,讨论一下,活跃一下思维还是有好处的。
datawindow insert语句
datawindow insert语句在PowerBuilder开发中,DataWindow是一个非常重要的控件,用于显示和操作数据库中的数据。
其中,DataWindow insert语句用于向数据库中插入新的记录。
本文将详细介绍DataWindow insert语句的使用方法。
首先,我们需要在PowerBuilder中创建一个DataWindow对象,并在其上绑定一个数据库表。
接下来,我们可以使用insertRow方法在DataWindow中插入一条空白记录。
```powerbuilderdw_1.insertRow(0)```上述代码中的dw_1是我们创建的DataWindow对象的名称。
insertRow方法会在DataWindow中插入一行,0表示在第一行插入。
这样,我们就成功向DataWindow中插入了一条空白记录。
接下来,我们需要通过DataWindow对象的SetItem方法给插入的记录赋值。
SetItem方法用于设置DataWindow对象中指定列的值。
```powerbuilderdw_1.SetItem(row, "column", value)```上述代码中,row表示要修改的行数,column表示要修改的列名,value表示要设置的值。
通过调用SetItem方法,我们可以给插入的记录的各个列设置相应的值。
除了使用SetItem方法,我们还可以使用SetItemString、SetItemNumber等方法根据不同的数据类型设置值。
在设置完插入记录的各个列的值后,我们可以调用Update方法将插入的记录同步到数据库中。
```powerbuilderdw_1.Update()```上述代码中的dw_1是我们创建的DataWindow对象的名称。
调用Update方法会将DataWindow中的新增记录同步到数据库中,实现插入操作。
如果需要在插入记录后执行一些其他的操作,比如更新其他相关的数据或者显示插入成功的提示信息,可以在调用Update方法之后编写相应的代码。
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中定义大于零的值就有定时器(可以精确到毫秒),有了这个定时器就可以实现动画了。
Datawindow 中evaluate用法
例一:
ls_1 = dw_1.Describe("dw_1.cb_4.text")ls_2 = This.Describe( + ".ColType")语法: value = datawindow.Describe(string ls)
例二:
判断第3行的sex是否为1,如果是则返回男,否则返回女dw_1.Describe("Evaluate('If(sex = 1, 男, 女) ', 3)")
语法: Evalute('expression',rowno)其中,expression是属性表达式,rowno是要描述的行号。该函数放置在Describe的属性列表中。
例三:dw_1.Describe("Evaluate('Lookupdisplay(column)'," + string (row number) + ")")
PB中的Describe,Evaluatate,LookUpDisplay小结
Describe 可以描述DW中某个对象的某个属性的取值,虽然函数Describe可以获取对象的信息,但是表达式的取值就不能正常读取了,而这又是经常遇到的. Evaluate 如果想获取数据窗口对象中由属性、函数等构成的表达式的取值时,必须在函数Describe中使用函数Evaluate,LookUpDisplay 在数据窗口控件上显示的值和字段实际得到的值并不相同,使用函数GetItemX只能读取这样的字段的真实取值,而不是用户看到的值。如何才能读取用户看 到的值?可以使用此函数,LookUpDisplay函数不能直接从PowerScript调用,可以在Describe中和Evaluate函数配合使 用。因为函数Lookupdisplay不能指定对哪行数据进行操作,它的参数只有一个字段名称,所以必须和Evaluate函数配合使用。该函数的语法 是:Lookupdisplay(columnname)参数columnname是字段的名称,而不是一个字符串。函数执行错误则返回空字符nteger li_PageCount
powerbuilder datawindow 参数
powerbuilder datawindow 参数PowerBuilder是一种用于创建Windows应用程序的集成开发环境(IDE),提供了一组强大的工具和功能,使开发人员能够快速构建功能丰富的应用程序。
其中最重要的功能之一是DataWindow,它允许开发人员轻松地在应用程序中显示和操作数据。
DataWindow是PowerBuilder中用于数据呈现和操作的组件。
它可以连接到各种数据源,包括数据库表、SQL语句、存储过程等,并将数据可视化为表格、检索结果、编辑窗体等形式。
参数的使用可以进一步增强DataWindow的功能和灵活性。
在PowerBuilder DataWindow中,参数允许我们以不同的方式过滤、排序和操作数据。
下面是一些常见的DataWindow参数使用场景:1. 参数查询:通过在DataWindow中使用参数,我们可以根据用户的输入或程序逻辑来查询特定的数据。
例如,一个销售订单应用程序可能会要求用户输入一个日期范围参数,以便只显示在该范围内创建的订单。
2. 动态筛选:参数还可以用于动态筛选DataWindow中的数据。
我们可以在运行时使用参数来更改筛选条件,从而快速过滤数据。
这在需要即时反馈的数据呈现场景中特别有用。
3. 排序:通过使用参数,我们可以根据用户选择的条件对数据进行排序。
例如,一个员工列表DataWindow可以使用参数,让用户选择根据姓名、工资等字段进行升序或降序排序。
4. 外部数据:参数允许我们从外部源(如其他DataWindow或全局变量)传递数据给DataWindow,以便在其中使用。
这样,我们可以通过参数共享数据,使多个DataWindow之间的数据更加一致和可靠。
5. 动态行高:参数还可以用于动态设置DataWindow中行的高度。
这对于根据数据内容自动调整行高或实现交替行颜色等效果非常有帮助。
综上所述,PowerBuilder中的DataWindow参数为我们提供了一种强大且灵活的方式来操作和展示数据。
PB中的Datawindow按页行滚动的应用设计
PB中的Datawindow按页行滚动的应用设计(深圳:独孤求败 2003-05-15)在Powerbuilder中,当Datawindow所显示的数据超过一个数据窗口时,常常通过单击滚动条控件使Datawindow中的容上下滚动,这样有时带来许多不便,如从某行开始滚动到现在过去了几行或几页,往上或往下滚动几行或几页都不好掌握,Powerbuilder中提供了几种方法可以解决这些问题,例如,按Pageu p、Pagedown、↑、↓。
这里主要介绍通过定义按钮、使用滚动函数来解决这些问题。
常用的滚动函数和语法。
用户在使用滚动条控件使数据滚动时,消息的传输由用户单击滚动条控件实现,使用函数和按钮使数据滚动时,消息的传输由用户单击按钮实现。
常用的函数如下:ScrollNextPage() 滚动到下一页ScrollNextRow() 滚动到下一行ScrollPriorPage() 滚动到前一页ScrollPriorRow() 滚动到前一行ScrollToRow() 滚动到某一行语法:Datawindowname. ScrollNextPage()Datawindowname.ScrollNextRow()Datawindowname.ScrollPriorPage()Datawindowname.ScrollPriorRow()Datawindowname.ScrollToRow()其中:Datawindowname为Datawindow在Powerbuilder的window下的控制名。
如每按一次按钮cb_1,将数据窗口dw_1中的数据往下翻一页,在命令按钮cb_1的click描述中的输入:dw_1. ScrollNextPage () 等等。
实例程序1、建立一个应用库app.pbl。
2、在这个应用库下建立一个应用app。
在应用app的script中输入open(w_testscroll)。
3、建立一个Datawindow:d_itemdata(选DataSouece为QuickSelect,PresentationStyle为Grid,数据表为前面提到的w_itemdata).4、按window按钮,新建window: w_testscroll。
datawindow designer2.5操作指南
datawindow designer2.5操作指南1. 引言1.1 背景在软件开发领域,数据窗口对象是一种常用的界面设计工具,用于展示和编辑数据库中的数据。
DataWindow 是Sybase 公司推出的一个强大且灵活的工具,提供了图形化设计环境DataWindow Designer 用于创建、修改和格式化数据窗口对象。
其中,DataWindow Designer2.5 是DataWindow 的一个重要版本,为开发者提供了更多功能和选项。
1.2 目的本文旨在通过详细介绍DataWindow Designer2.5 的操作指南,帮助读者全面掌握该工具的使用方法和技巧。
我们将从基础操作开始,逐步引导读者了解如何打开软件、创建新文件,并深入讲解如何设计数据窗口对象以及设置属性和格式化数据窗口等方面内容。
此外,我们还会分享一些高级操作技巧和注意事项,例如如何配置数据源与绑定、如何自定义查询与计算字段、以及如何导出和打印数据窗口内容等。
1.3 结构本文共分为五个主要部分,在以下章节中将对DataWindow Designer2.5 进行详细讲解:- 第二部分:DataWindow Designer2.5 简介。
在此部分中,我们将概述该工具的功能,并介绍其适用范围和特点。
- 第三部分:使用DataWindow Designer2.5 的步骤。
在此部分中,我们将向读者展示如何打开软件和创建新文件,以及如何设计数据窗口对象,并详细解释了属性设置和数据窗口格式化的过程。
- 第四部分:高级操作技巧与注意事项。
在此部分中,我们将分享一些进阶技巧,例如如何配置数据源与绑定不同的数据库,以及如何编写自定义查询和计算字段来满足特定需求。
另外,我们还会介绍如何导出和打印数据窗口内容。
- 第五部分:结论与展望。
在此部分中,我们将总结本文涉及的要点,并提供一些建议来优化DataWindow Designer2.5 的使用体验。
pb datawindowchild 用法
在PowerBuilder中,DataWindowChild(简称DWChild)是DataWindow对象的一部分,它表示DataWindow中的子数据窗口。
DataWindowChild允许在主数据窗口中嵌套其他数据窗口,从而创建更复杂的数据窗口布局。
下面是关于DataWindowChild的一些详细解答:1. 创建 DataWindowChild要创建DataWindowChild,首先确保已经在主数据窗口中创建了一个DataWindowChild对象。
可以通过以下步骤来完成:•打开 PowerBuilder IDE。
•在主数据窗口上右键单击,选择“Insert” > “DataWindowChild”。
•在弹出的对话框中,为DataWindowChild指定名称并点击“OK”。
2. 设置 DataWindowChild 的属性在创建DataWindowChild后,可以设置其属性。
一些重要的属性包括:•DataWindow 对象属性:在General选项卡中,指定子数据窗口使用的DataWindow对象。
这决定了子数据窗口的数据源。
•Presentation 属性:在General选项卡中,可以设置DataWindowChild的位置、大小等外观属性。
3. 在主 DataWindow 中使用 DataWindowChild要在主数据窗口中使用DataWindowChild,需要在主数据窗口的Detail或Summary区域添加一个子数据窗口控件。
以下是步骤:•在主数据窗口上右键单击,选择“Insert” > “Control”。
•在弹出的对话框中,选择DataWindowChild。
•将新创建的子数据窗口控件放置在主数据窗口的适当位置。
4. 编程控制 DataWindowChild可以通过PowerScript来编程控制DataWindowChild。
以下是一些常见的操作:•设置 DataWindowChild 的数据源:使用SetTransObject方法为DataWindowChild设置事务对象,然后使用Retrieve方法检索数据。
浅谈PB中动态DataWindow的技术应用
浅谈PB中动态DataWindow的技术应用在PowerBuilder的应用程序开发过程中,对数据库中数据进行操作的对象是数据窗口对象(DataWindow),利用数据窗口对象,我们可以十分方便地完成对数据库中已经存在的表中数据进行检索、查询、插入、删除和更新。
但是,在实际问题中,我们常常遇到数据库中的一些表是用户在程序运行期间动态生成的,若要对这样表中的数据进行操作,就要运用动态数据窗口对象,值得提到的一点是,在动态数据窗口对象生成时,其标题区(Header Band)中的文本不能直接显示成汉字,这的确是一点遗憾,不过这个问题可以通过映射的方法得到解决。
一、问题的提出设有如下两张表:A表中的记录是用户可以在程序运行期间进行自由增加、修改、删除和更新的,B表中的属性(即:字段)由A表中的记录决定并动态创建,而且,能够方便地对B表中的数据提供汉化的操作界面。
当然,将B表创建为下表也是可以的,但是,在动态生成数据窗口对象时,其标题区(Header Band)中的文本不会显示成汉字,而是一些乱码,反而不利于问题的解决。
二、问题的解决1、动态创建B表的解决我们要动态创建B表,就要构建动态SQL语句。
何谓动态SQL语句?数据库应用程序通常进行确定的工作,因此在编写和编译时,就可以确定完整的SQL语句,但当需要使用PowerBuilder不支持的嵌入SQL语句(如DDL语句),或者在编译时不知道语句的具体格式或参数,则在运行时构成SQL语句,这类语句被称为动态SQL语句。
动态SQL语句的格式:EXECUTE IMMEDIA TE SQL statement [Using Transation Object];参数说明:SQL statement 包含一条有SQL语句的字符串Transation Object 事务对象2、动态数据窗口对象创建及标题区(Header Band)中文本汉化的解决(1) 在程序运行时,我们可以调用Create函数动态生成数据窗口对象。
pb9 datawindow 的几种创建方式
pb9 datawindow 的几种创建方式在 PowerBuilder 9 中,DataWindow 是一个非常重要的概念,它是用来显示和编辑数据库数据的主要工具。
在 PB9 中,有多种不同的方式可以创建 DataWindow 对象,本文将介绍几种常用的创建方式。
1. 使用 DataWindow PainterDataWindow Painter 是 PowerBuilder 提供的可视化设计工具,通过拖拽和设置属性的方式创建 DataWindow 对象。
使用 DataWindow Painter 可以方便地创建简单和复杂的 DataWindow,包括单表、多表、嵌套表等。
下面是使用 DataWindow Painter 创建 DataWindow 的步骤:首先,打开 PowerBuilder 开发环境,进入 DataWindow Painter。
然后,选择一个空白的 DataWindow 对象或者从已有的 DataWindow 模板中选择一个适合的模板。
接下来,根据需要拖拽数据库字段或者手动添加控件到 DataWindow 中,并设置它们的属性。
最后,保存并命名 DataWindow 对象,可以在应用程序中使用该对象来显示数据。
使用 DataWindow Painter 创建 DataWindow 的优点是可以直观地设计和调整DataWindow 的布局和外观,方便后续的修改和维护。
2. 使用 DataWindow ControlDataWindow Control 是一个在 PowerBuilder 窗口中嵌入的控件,可以通过设置Control 的属性来创建和配置 DataWindow 对象。
使用 DataWindow Control 创建DataWindow 的步骤如下:在 PowerBuilder 窗口中新建一个 DataWindow Control 控件或者从已有的控件中选择一个适合的 Control。
PowerBuilder高级应用
PowerBuilder10.5
§1.1 动态数据窗口
§1.1.1 数据窗口属性 数据窗口是PowerBuilder中最复杂的对象,数据窗口及数据窗口对象中的所有实体
都有一组相应的属性。PowerBuilder允许用户在程序运行过程中利用 PowerBuilder提供的函数或圆点操作符获取或改变属性值。例如: 数据窗口背景颜色 DataWindow.Color 数据窗口某列风格 Columnname.Border 数据窗口某列位置 Columnname.X 数据窗口SQLSelect语句 DataWindow.Table.SQLSelect 要了解数据窗口属性,可以通过系统帮助,也可以使用DWSyntax。
Library "kernel32.dll" ③ cb_1 Cliked事件脚本: string sfilename,tfilename boolean bfail,ret
sfilename=sle_1.text
tfilename=sle_2.text
bfail=true
ret=CopyFileA(sfilename,tfilename,bfail)
▪ §1.2.2 数据类型转换
用DataWindow实现对多表的修改
用DataWindow实现对多表的修改在开发中,我们有时会遇到用一个DataWindow来表现数据库中多个表中数据的情形,这时DataWindow用到的SQL Select语句是一个多张表连接的视图。
当我们对这样一个DataWindo w中的数据进行修改并提交数据库时,我们将会发现我们并不能简单地使用一条dw.update() 来实现同时对数据库中多张表的修改。
事实上,系统在DataWindow中提交数据库并生成UPDATE语句时所根据的仍然是图一这个窗口。
这里我们讲一下这个窗口中的选项对生成UPDATE语句的其它影响。
当我们调用UPDATE函数时,这个窗口中有四个域将被涉及:·Where Clause for Update/Delete where子句的生成依据。
这个选项主要是用来进行并发控制的,这里不再赘述。
·Updateable Columns可修改的列。
这是一个我们将遇到麻烦的地方。
PowerBuilder只能同时对一张要修改的表进行管理,所以我们不能一下子指出所有表中所有要修改的列。
在这里我们只能指出某一张表中要修改的列,以后在程序中用Modify语句依次指定其它每一张表中要修改的列。
·Table to Update将要修改的表。
PowerBuilder只支持一张表的修改,所以我们也只能在这里只指定其中的某一张表,其余的表也将要利用Modify语句修改。
·Unique Key Columns唯一键的列。
这也是我们要注意的地方,因为PowerBuilder生成的UPDATE语句只是在要修改的表名中使用DATABASE.OWNER.TABLE这样的全称,而引用某列时只是简单指出列名,而不用DATABASE.OWNER.TABLE.COLUMN这样的全称。
所以,如果我们这里用到的唯一列标识不属于上面"Table to Update"中定义的表的列,这一条SQL语句将出现语法错误。
DataWindow使用技巧
以下的[数据库]代表D ataba se, [表]代表T able,[字段]代表Fiel d或Col umn。
在设置Dat aWind ow的过滤条件时注意比较符an d ornot l ike的先后顺序,最后以括号明显的表示顺序为好,提高可读性,确保结果万无一失。
例如下面的语法就是错误的dw_1.se tFilt er("n ame l ike '赵%' a nd se x = 0")因为an d的级别比like优先,所以需要改为dw_1.set Filte r("(n ame l ike '赵%')and (sex = 0)")复制和粘贴T ext对象以节约时间在Data windo w中往会有许多Tex t对象用于显示一些报表的其他信息,为了节约时间,当有一个te xt已设置好字体,颜色,你只用简单的用M ouse右键选择此T ext,然后从弹出菜单中选择“复制”和“粘贴”即可生成一个同样风格和外观的Tex t对象,如果需要的话,简单的设置此文本的名称即可。
方便编程,去掉Colum n名称讨厌的tabl e前缀字符串在Dat aWind ow数据源中如果有多于一张表,在生成的C olumn名称会以t ablen ame_f ield1形式出现,这样在使用Setit em, G etIte mxxxx x等函数时免不了要多键入一些字符,如果你在选择数据源时先选择一张主表(通常是需要updat e的表,使用Seti tem,G etIte mxxxx函数机会最多的),然后选择需要的列生成D atawi ndow以后,再改动datasourc e,加入新的表,这样只有新加入表的Col umn名称才会以ta blena me_fi eld1形式出现。
PB中的Datawindow按页行滚动的应用设计
PB中的Datawindow按页行滚动的应用设计(深圳:独孤求败 2003-05-15)在Powerbuilder中,当Datawindow所显示的数据超过一个数据窗口时,常常通过单击滚动条控件使Datawindow中的容上下滚动,这样有时带来许多不便,如从某行开始滚动到现在过去了几行或几页,往上或往下滚动几行或几页都不好掌握,Powerbuilder中提供了几种方法可以解决这些问题,例如,按Pageu p、Pagedown、↑、↓。
这里主要介绍通过定义按钮、使用滚动函数来解决这些问题。
常用的滚动函数和语法。
用户在使用滚动条控件使数据滚动时,消息的传输由用户单击滚动条控件实现,使用函数和按钮使数据滚动时,消息的传输由用户单击按钮实现。
常用的函数如下:ScrollNextPage() 滚动到下一页ScrollNextRow() 滚动到下一行ScrollPriorPage() 滚动到前一页ScrollPriorRow() 滚动到前一行ScrollToRow() 滚动到某一行语法:Datawindowname. ScrollNextPage()Datawindowname.ScrollNextRow()Datawindowname.ScrollPriorPage()Datawindowname.ScrollPriorRow()Datawindowname.ScrollToRow()其中:Datawindowname为Datawindow在Powerbuilder的window下的控制名。
如每按一次按钮cb_1,将数据窗口dw_1中的数据往下翻一页,在命令按钮cb_1的click描述中的输入:dw_1. ScrollNextPage () 等等。
实例程序1、建立一个应用库app.pbl。
2、在这个应用库下建立一个应用app。
在应用app的script中输入open(w_testscroll)。
3、建立一个Datawindow:d_itemdata(选DataSouece为QuickSelect,PresentationStyle为Grid,数据表为前面提到的w_itemdata).4、按window按钮,新建window: w_testscroll。
datawindow designer 计算公式
datawindow designer 计算公式DataWindow Designer是一种用于创建和设计DataWindow对象的工具。
在DataWindow Designer中,可以使用计算公式来定义DataWindow对象的计算字段或修改现有字段的值。
计算公式是由DataWindow的语法和函数组成的表达式。
计算公式可以包含数据列、运算符、函数、常量等。
使用这些元素,可以根据需要执行数学计算、条件判断等操作,从而生成所需的计算结果。
除了基本的数学运算外,DataWindow Designer还提供了一些内置函数,例如:字符串处理函数、日期和时间函数、转换函数等。
这些函数可以在计算公式中使用,以便在数据窗口中执行更复杂的计算操作。
拓展的话,DataWindow Designer还支持一些高级特性,如嵌套计算公式、条件表达式、选择性显示和隐藏、联动计算等。
这些功能可以更灵活地定义计算公式,根据不同的条件生成不同的计算结果。
总结来说,DataWindow Designer中的计算公式可以用于创建和修改DataWindow对象中的计算字段,以实现各种数学计算和逻辑操作。
使用计算公式,可以根据需要生成所需的计算结果,并利用DataWindow Designer的其他功能进行更高级的数据处理。
datawindow insert语句 -回复
datawindow insert语句-回复如何使用DataWindow Insert语句插入数据在数据处理和数据库管理过程中,插入数据是一个常见的操作。
DataWindow是一种强大的PowerBuilder对象,用于与数据库交互并提供数据管理功能。
DataWindow Insert语句是一种用于将数据插入数据库表中的语句。
在本文中,我们将逐步介绍如何使用DataWindow Insert 语句插入数据。
第一步- 创建DataWindow对象首先,我们需要创建一个DataWindow对象。
在PowerBuilder中,可以使用DataWindow设计器来创建和定义DataWindow对象。
DataWindow设计器为我们提供了一个可视化界面,使我们能够轻松地定义数据窗口和与之关联的数据库表的结构。
打开PowerBuilder并创建一个新的DataWindow对象。
选择菜单中的文件→新建→DataWindow,并选择一个数据源。
在数据源对话框中,选择与您要插入数据的数据库表关联的数据源。
第二步- 组织数据接下来,我们需要确定要插入数据库表的字段,并为它们提供值。
在DataWindow设计器中,单击选择控件,并在控件检视器中设置数据源和数据对象。
确保为每个字段指定正确的数据类型,并为需要插入的字段提供值。
您可以通过直接在DataWindow设计器中输入值或使用脚本语言为字段赋值。
例如,如果要在插入数据时设置当前日期和时间,您可以使用以下脚本:dw_1.modify("date_column = today()")dw_1.modify("time_column = currenttime()")在上面的示例中,dw_1是DataWindow对象的名称,date_column和time_column是要插入数据的列的字段名称。
第三步- 创建DataWindow事务对象DataWindow事务对象用于管理数据操作的事务。
datawindow update 中2个参数 用法
datawindow update 中2个参数用法
DataWindow Update方法有两个可选参数:( { boolean accept {, boolean resetflag } } )。
下面是对两个参数的用法的介绍:
- `accept`参数:
- 默认为`TRUE`,表示执行`Accepttext()`方法。
如果数据验证通过,`update()`方法成功;否则,`update()`方法被取消,更新失败。
- 如果在`datawindow`的`itemchanged`事件中调用`accepttext()`,可能会形成死循环。
如果想在该事件中调用`update()`方法,确保`update()`的第一个参数为`false`。
这样在调用`update()`方法时,不会首先调用`accepttext()`,从而避免死循环。
- `resetflag`参数:
- 表示执行完`update()`后,是否将数据窗口中各记录的修改标志复位。
- 一般在多个数据窗口更新时,为`FALSE`。
当所有更新执行成功后,再使用`resetupdate()`方法复位更新标志。
用DataWindow设计通用的编码帮助窗口
用DataWindow设计通用的编码帮助窗口(深圳:独孤求败 2003-05-16)---- 一、前言---- 用一组数字或键盘字符序列对具有某种相同属性的汉字词组或其它知识信息进行主动编码或被动自动编码,建立相应的编码库,以方便输入或助记,是大多数中文界面应用软件用以解决普通用户与应用软件交互瓶颈的基本方法,为此,设计者必须设计一个编码帮助处理程序,以满足编码信息处理的需要。
一个较大的应用软件,该功能代码设计的质量,一方面关系到软件的开发效率,另一方面又关系到人机交互界面的友好程度。
我们在许多股票分析软件中所看到的具有良好功能的股票代码帮助处理界面,它既能使用股票名称拼音首字母定位股票名称,又能用股票数字代码查找,就是一个不错的代码帮助处理人机接口---- PowerBuilder(以下简称PB)作为C/S环境下的数据库前端开发工具,其面向对象、图形用户界面、可视化,以及方便移植等特点,成为众多程序员的最理想选择之一。
笔者在用PB开发应用系统时,用Dat aWindow设计了一个通用的代码帮助窗口,很好地解决了上述问题。
---- 二、实现方法及步骤---- 1. 用结构画笔新建一结构s_help,其元素列表如下:序号变量名类型注释1 dw_name DataStore 编码和关键词关系对照表DataStore2 help_nam String DataStore中关键词列名3 help_code String DataStore中数字编码列名4 help_pybm String DataStore中拼音编码列名5 help_now_bm String DataStore当前编码筛选所使用的编码6 w_title String 编码帮助窗口的title值---- 2. 定义全局变量gs_bm、gs_mc:---- string gs_bm,gs_mc // 用来存放编码帮助处理程序所返回的数字编码列和其对应的关键词列的值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4 使資料視窗中的被選中行具有更好的外觀
if row<1 then return // setredraw(false) if this.o b j e c t.flag[row]=1 then //如果該行被選中,撤銷選擇, 否則選中該行 this.Object.flag[row]=0 else this.Object.flag[row]=1 end if setredraw(true) 您還可以定制本選中行的字體,文本屬性等等。原理 相同,不再贅述。
如何在DataWindow中用資料類型為Datetime DataWindow中用資料類型為Datetime的列 12 如何在DataWindow中用資料類型為Datetime的列 為條件進行查找
1.當要查找的日期條件是一常數時使用如下運算式: ls_Find = "datetime_col = DateTime ('1/1/1999')" 2.當要查找的日期條件是一個變數時使用如下的運算式: ls_Find = "datetime_col = DateTime ('" + ls_Date + "')" 3.當要查找的日期條件是一個DateTime資料類型時使用如 下運算式: ls_Find = "datetime_col = DateTime ('" + String (ldt_DateTime) + "')"
4 使資料視窗中的被選中行具有更好的外觀
多行選擇 多行選擇比較複雜,如果單純依靠改變資料視窗的屬性 沒法實現,我們必須使用資料視窗屬性和代碼結合起來才 能實現 首先,改變資料視窗的SQL語句,增加一個計算欄位:0 as flag,Select 語句改為: Select col1,col2 ,1 as flag from tablename where .....,當 返回資料視窗painter時,您就會發現多了一個欄位flag,我們 就是利用這個欄位保存行被選中的資訊。 其次,修改各個欄位的背景顏色屬性,設置為: if(flag=1,RGB(255,126,0),RGB(255,255,255)) 第三:在資料視窗控制項中,增加對clicked 事件的處 理,代碼如下:
設置資料視窗Boolean Boolean型屬性的三種方法 13 設置資料視窗Boolean型屬性的三種方法
PowerBuilder提供了三種方法設置資料視窗的布林型 屬性,分別是True/False, 1/0, 'Yes'/'No'。例如: dw_1.Object.address.Visible = 0 dw_1.Object.address.Visible = False dw_1.Object.address.Visible = 'No' PowerBuilder在處理上以字串的形式保存屬性,而不考 慮屬性值是布林型、長整型或是字元型。 為了進一步理解,可以導出一個資料視窗並查看它的 原碼,可以發現即使是列的顏色屬性它也是使用帶雙引號 的數字來表達。
5 將日期型欄位初始化為當天的日期
使用 Column Specifications 對話方塊來設置資料的初 始值是一個比較好又比較通用的方法。 為了將日期型欄位 初始化為當天的日期,只要設置初始化值為today,而不是 today()即可。同樣設置初始值為NUll,可以使用null,而不是 null()。
如何創建一個報表, 10 如何創建一個報表,如下形式
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),即可達到逐漸遞增求 和的功能。
DataWindow中調整列順序 6 在DataWindow中調整列順序
在 Gird 風格的 DataWindow 中,列的排列順序是按照你選 擇 Column 的順序排列的,並且不能改變.要改變列的順序則必 須重新製作 DataWindow. 最近我發現一個辦法可以改變列的順序: 在 DataWindow 畫板中打開要修改的 DataWindow,然後按 'Preview' 按鈕切換 到預覽模式下,選擇要移動的列標題並拖動到預定位置,然後返 回 DataWindow 畫板,存檔即可.
3 在資料視窗中實現動畫
要實現動畫,必須要有計時器,在資料視窗中已經有 了一個計時器,雙擊資料視窗將彈出的對話方塊,在 Timer Interval中定義大於零的值就有計時器(可以精確到 毫秒),有了這個計時器就可以實現動畫了。比如要改變 某欄位的背景顏色,可設 backgound.color=RGB(Integer(Right(string(now(),'hhmmssf'), 1))*256/10,Integer(Right(string(now(),'hhmmssf'),1))*256/10, 0) 當然,您不僅可以改變背景顏色,而且可以改變字體 等等任何屬性
Line建立漂亮的 建立漂亮的Grid DataWindow的技巧 9 用Line建立漂亮的Grid DataWindow的技巧
雖然PowerBuilder有Grid風格的DataWindow,但不夠 靈活,如果想列印一張邊框粗線條或雙線,內框為細線條 的表格直接使用Grid風 格的DataWindow就不能實現。因 此許多人都用Tabular風格的DataWindow,然後自己用Line 來實現Grid。 在調整線條位置是一個即傷腦筋又傷眼睛的 事件,而一旦需要調整行高,所有工作都得重來,試一試 用下面方法,會大大減輕你的工作量: 在vertical lines, 改變它的屬性,在Expressions Tab上,y1行上輸入0,y2行 上輸入rowheight() - 1 在horizontal lines, 設置 y1 和 y2 = rowheight() - 5 這樣PowerBuilder會自動調整線的座標,你 只需要設置橫線的長度和x1,x2的座標即可。 馬上Preview 一下,看一看效果! 你再也不需要因為行的高度發生改變 而重新調整線條位置。
11 資料視窗的資料送緩衝區之前確認的四個步驟
• 判斷資料類型是否正確。如不正確則觸發ItemError事件。 • 判斷資料是否符合有效性規則。如不符合有效性規則,同 樣觸發ItemError事件。 • 判斷是否有資料被改動。 • 判斷資料是否通過ItemChanged事件,如果資料和 ItemChanged相斥,將觸發ItemError事件。
美化DataWindow DataWindow的顯示效果 8 美化DataWindow的顯示效果
使DataWindow 的單雙行顯示顏色不同,不僅僅可以 使你的應用程式更顯專業性,並使資料的可讀性增強。先 調出你需要改動的DataWindow,在Detail band按下右鍵選 擇Properties,選擇Tab頁中的Expressions,在color屬性中 輸入下面內容:(注意是在Detail明細顯示 段按右鍵,而 不是在Column上) IF(MOD(GETROW(),2)=0,RGB(192, 192, 192), RGB(255, 255, 255)) 馬上Preview一下,看一看效果 如何。
如何在DataWindow DataWindow中實現列的自動折行 2 如何在DataWindow中實現列的自動折行
我們在PowerBuilder應用程式的開發過程中, 使用 DataWindow時,經常會遇到某列的資料太長, 不能同時全部顯 示的情況. 若採用自動水準滾動, 操作起來又不夠簡便. 下面介 紹一種方法, 實現列資料多行顯示, 即實現列資料的自動折行. 具體步驟如下: 1) 在DataWindow Painter中打開此DataWindow. 2) 在需設定自動折行的列上雙擊滑鼠, 彈開此列的屬性視窗. 3) 選擇Position標籤, 選中Autosize Height 多選框. 4) 選擇Edit標籤, 不選中Auto Horz Scroll多選框. 5) 單擊OK按鈕, 保存所做的修改.
DataWindow列只能追加不能修改 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 中只有新追加的記錄可修改,而其他記錄是 唯讀的。
DataWindow-進階介紹 進階介紹
Describe
• 語法:dwcontrol.Describe ( string propertylist ) • 範例:dw_1.Describe("DataWindow.Table.Select") • 以上l.Modify ( string propertylist ) • 範例:dw_1.Modify("DataWindow.Color = 255") • 以上語句修改DW顏色
Retrieve時不清除原有Datawindow資料 時不清除原有Datawindow 7 Retrieve時不清除原有Datawindow資料
當你調用Retrieve函數,PowerBuilder自動清除原有 DataWindow然後Retrieve資料。在Datawindow RetrieveStart事件中,使用Return 2,這樣PowerBuilder不會 清除原有資料而是追加新資料。