PB中一些技巧
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中定义大于零的值就有定时器(可以精确到毫秒),有了这个定时器就可以实现动画了。
PB的小技巧

PB的小技巧1.如何使DataWindow中的数据只能追加新记录而不能修改。
利用Column 的Protect 属性可以很方便的做到这一点,方法如下:将每一列的Protect 属性设置为:If( IsRowNew(), 0, 1) )在PowerScript 中可以动态修改Protect 属性:dw_1.Modify("column_name_here.Protect='1~tIf(IsRowNew(),0,1)'")2. 允许从空的非字符字段跳离string ss = this.dwDescribe(this.GetColumnName()+".coltype")//s = this.dwDescribe("#"+String(this.GetColumn())+".coltype")CHOOSE CASE sCASE "number"IF Trim(this.GetText()) = "" THENint null_numSetNull(null_num)this.SetItem(this.GetRow(),this.GetColumn(),null_num)this.SetActionCode(3)END IFCASE "date"IF Trim(this.GetText()) = "" THENdate null_dateSetNull(null_date)this.SetItem(this.GetRow(),this.GetColumn(),null_date)this.SetActionCode(3)END IFCASE "time"IF Trim(this.GetText()) = "" THENtime null_timeSetNull(null_time)this.SetItem(this.GetRow(),this.GetColumn(),null_time)this.SetActionCode(3)END IFCASE "datetime"IF Trim(this.GetText()) = "" THENdate null_datetimeSetNull(null_datetime)this.SetItem(this.GetRow(),this.GetColumn(),null_datetime)this.SetActionCode(3)END IFEND CHOOSE3. 当我们为Datawindow的每一行显示行号时可以简单的放一个表达式为GetRow() -- 计算列。
在PB中操作BLOB数据的技巧

在PB中操作BLOB数据的技巧在PowerBuilder(PB)中操作BLOB数据是一项常见任务,可以用于存储和检索二进制数据,例如图像、文档和多媒体文件。
下面是操作BLOB数据的一些技巧:1.插入BLOB数据:要插入BLOB数据,首先需要创建一个BLOB变量。
使用Blob类型来声明变量,然后使用Create方法为其分配内存空间。
接下来,使用FileOpen函数打开要插入的文件,并使用ReadFile函数将文件内容读取到BLOB变量中。
最后,使用Insert方法将BLOB数据插入到数据库表中。
以下是一个示例代码片段,演示如何插入BLOB数据:```Blob lb_blobFile ld_fileInteger li_filelb_blob = CREATE Blobli_file = FileOpen("C:\image.jpg", StreamMode!, Read!,Denied!)FileRead(ld_file, lb_blob)FileClose(li_file)dw_1.SetItemBlob(1, lb_blob)dw_1.InsertRow(0)```2.检索BLOB数据:要检索BLOB数据,首先需要从数据库中获取BLOB列的值。
可以使用Retrieve方法检索数据行,然后使用GetItemBlob方法获取BLOB数据并保存到BLOB变量中。
接下来,可以将BLOB数据保存为文件。
以下是一个示例代码片段,演示如何检索并保存BLOB数据:```Blob lb_blobFile ld_fileInteger li_filedw_1.RetrieveRow(0)lb_blob = dw_1.GetItemBlob(1)li_file = FileOpen("C:\image.jpg", StreamMode!, Write!, Shared!)FileWrite(ld_file, lb_blob)FileClose(li_file)```3.更新BLOB数据:要更新BLOB数据,可以使用相同的方法来检索和插入BLOB数据。
pb的ddlb技巧

pb的ddlb技巧在数据库管理中,DDL(数据定义语言)用于定义数据库的结构,其中包括创建、修改和删除数据库对象。
而PB(PowerBuilder)是一种集成开发环境,用于构建企业级应用程序。
在PB中操作数据库时,可以使用DDL语句来创建、修改和删除数据库对象。
以下是一些PB中使用DDL的技巧:1. 创建表:在PB中,可以使用CREATE TABLE语句来创建数据库表。
可以指定表的名称、列的数据类型、约束等信息。
例如:CREATE TABLE employee (。
emp_id INT PRIMARY KEY,。
emp_name VARCHAR(50),。
emp_salary DECIMAL(10,2)。
);2. 修改表:如果需要修改已存在的表结构,可以使用ALTER TABLE语句。
例如,添加新的列或修改列的数据类型:ALTER TABLE employee.ADD emp_department VARCHAR(50);3. 删除表:如果需要删除已存在的表,可以使用DROP TABLE 语句。
例如:DROP TABLE employee;4. 创建索引:在PB中,可以使用CREATE INDEX语句来创建索引,以提高查询性能。
例如:CREATE INDEX idx_emp_name ON employee (emp_name);5. 删除索引:如果不再需要某个索引,可以使用DROP INDEX 语句来删除它。
例如:DROP INDEX idx_emp_name ON employee;6. 使用事务,在执行DDL语句时,建议使用事务来确保数据的一致性。
可以使用BEGIN TRANSACTION和COMMIT TRANSACTION语句来控制事务的范围。
7. 错误处理,在执行DDL语句时,需要考虑可能出现的错误情况。
可以使用TRY...CATCH块来捕获并处理异常情况,以确保程序的稳定性。
总之,在PB中使用DDL语句需要谨慎对待,确保在操作数据库结构时不会造成数据丢失或不一致。
PB数据窗口技巧大全

PB数据窗口技巧大全PB数据窗口是PowerBuilder语言中的一种常用控件,用于显示和操作数据。
在实际项目开发中,掌握一些PB数据窗口的技巧能够提高开发效率和用户体验。
下面是一些常用的PB数据窗口技巧的详细介绍,包括动态数据源、处理数据更新、格式化数据、控制数据窗口行为等方面。
1. 动态数据源:PB数据窗口支持通过修改SQL语句和参数实现动态查询。
可以通过修改dw_1.sqlsyntax和dw_1.settransobject等属性实现动态数据源切换或过滤。
2. 处理数据更新:PB数据窗口提供了一些方法来处理数据的插入、更新和删除。
可以使用dw_1.insertrow、dw_1.updaterow和dw_1.deleterow等方法来实现数据的增删改操作。
3. 格式化数据:PB数据窗口提供了一些格式化数据的方法,可以通过修改数据窗口列的format属性来实现对数据的格式化。
例如,可以使用dw_1.modify表示列的format属性来自定义数据的显示格式。
4. 排序和过滤数据:PB数据窗口提供了排序和过滤数据的功能。
可以通过修改dw_1.setsort和dw_1.setfilter等方法实现对数据的排序和过滤。
5. 控制数据窗口行为:PB数据窗口提供了一些属性和方法来控制数据窗口的显示效果。
例如,可以使用dw_1.retrieve来重新检索数据,使用dw_1.setitemstatus来设置数据窗口的状态等。
6.多表连接查询:PB数据窗口支持多表连接查询,可以通过在SQL 语句中使用连接符号和条件来实现多表连接查询的功能。
7.数据窗口插入计算列:PB数据窗口支持插入计算列,可以通过在SQL语句中使用函数和表达式来插入计算列实现对数据的计算和处理。
8.数据窗口多级分组:PB数据窗口支持多级分组,可以通过在数据窗口中设置分组列和聚合函数来实现数据的分组和统计。
9.数据窗口嵌套:PB数据窗口支持嵌套,可以在一个数据窗口中插入另一个数据窗口,实现数据的嵌套显示和处理。
pb常用操作技巧
这是刚毕业时在某一“大”公司使用PB6.5开发联通营帐系统时的笔记虽然好久没有也许以后也不会再使用pb开发程序了但这算是我使用过的唯一一个前端专业开发工具把笔记记录下来权当作纪念吧_ //PB中标准调用sql语句ls_sql quotselectroad_name from bb_data_wide_bus_temp_t where register_number quotls_register_number quotquot declare cur_get dynamic cursor for sqlsa prepare sqlsa from :ls_sql open dynamic cur_get fetch cur_get into :ls_value if sqlca.sqlcode ltgt 0 then messagebox操作信息提取失败exclamation end if close cur_get //PB中标准循环调用sql语句DECLARE cur_sql DYNAMIC CURSOR FOR SQLSA PREPARE SQLSA FROM :ls_sql OPEN DYNAMIC cur_sql do while sqlca.sqlcode 0 FETCH cur_sql INTO :ls_register_number:ls_complete_note ll_sqlcode sqlca.sqlcode if ll_sqlcode lt 0 then CLOSE cur_sql af_disconnect messagebox错误提示检索受理编号错误StopSign return elseif ll_sqlcode 100 then exit end ifddlb_register_number.additemtrimls_register_number ls_complete_note loop CLOSE cur_sql //窗口open事件通用脚本//置窗口居中af_center_windowthis //连接数据库af_connect //定义变量dataWindowChild dwc //获取城市代码下拉列表并取值dw_city_code.getChildcity_codedwc dwc.setTransObjectsqlcadwc.Retrievegs_citycodegi_citylevel dw_city_code.setTransObjectsqlcadw_city_code.Retrieve dw_city_code.setItem1city_codedwc.getItemString1city_codeis_city_code dw_city_code.getItemStringdw_city_code.getRowcity_code //获取业务类型下拉列表并取值dw_service_kind.getChildservice_kinddwcdwc.setTransObjectsqlca dwc.Retrieve dw_service_kind.setTransObjectsqlcadw_service_kind.Retrieve dw_service_kind.setItem1service_kind10 ii_service_kinddw_service_kind.getItemNumberdw_service_kind.getRowservice_kind //获取申请事项下拉列表并取值dw_apply_event.getChildapply_eventdwc dwc.setTransObjectsqlca dwc.Retrieveii_service_kind dw_apply_event.setTransObjectsqlcadw_apply_event.Retrievedw_apply_event.setItem1apply_eventdwc.getItemNumber1apply_event ii_apply_event dw_apply_event.getItemNumberdw_apply_event.getRowapply_event //激发查询事件cb_query.TriggerEventclicked //断开数据库af_disconnect //查询按钮通用脚本//连接数据库af_connect //定义变量dataWindowChild dwc //dw_1检索数据dw_1.setTransObjectsqlca dw_1.Retrieveii_service_kind //dw_2检索数据intli_rowli_row_temp dw_2.getChildactiondwc dwc.setTransObjectsqlcadwc.Retrieveii_service_kind dw_2.setRowFocusIndicatorhand dw_2.setTransObjectsqlca li_row_temp dw_2.Retrieveii_apply_eventii_service_kindis_city_codedw_2.scrollToRowli_row_temp //如果未检索到数据插入一空行有数据就过滤string ls_filter int li_action if li_row_temp 0 then dw_2.insertRow0 else for li_row 1 todw_2.rowCount li_action dw_2.getItemNumberli_rowaction ls_filter action ltgt stringli_action dw_1.setFilterls_filter dw_1.filter next end if //断开数据库af_disconnect //增加按钮通用脚本//变量定义int li_stepli_actionli_auto_statusli_row //确认选择要增加的记录if dw_1.getSelectedRow0 0 then MessageBox提示信息请选择要添加的记录exclamation return end if //取出要增加的信息li_stepdw_2.getItemNumberdw_2.getRowstep li_actiondw_1.getItemNumberdw_1.getSelectedRow0action li_auto_statusdw_1.getItemNumberdw_1.getSelectedRow0auto_status //添加信息li_rowdw_2.insertRow0 dw_2.setItemli_rowstepli_step dw_2.setItemli_rowactionli_actiondw_2.setItemli_rowauto_statusli_auto_status dw_2.scrollToRowli_row //删除按钮通用脚本//删除前先确认IF dw_2.GetRow 0 THEN MessageBox提示信息请选择要删除的记录exclamation Return ELSE IF MessageBoxquot提示信息quotquot确实要删除指定的记录quotQuestionYesNo2 2 THEN Return dw_2.DeleteRowdw_2.getRow END IF //保存按钮通用脚本//连接数据库af_connect //定义变量stringls_city_codels_error int li_service_kindli_apply_eventli_rowli_step dataWindowChild dwc //检测数据是否发生变化dw_2.AcceptText IF dw_2.ModifiedCountdw_2.DeletedCount 0 THEN MessageBoxquot操作提示quotquot数据未发生变化无需保存quotexclamation return END IF //检测是否为空或零dw_2.setSortstep adw_2.sort FOR li_row 1 TO dw_2.RowCount li_stepdw_2.GetItemNumberli_rowstep IF IsNullli_step OR li_step 0 THEN MessageBox操作提示步骤不能为空或零请重新输入exclamation dw_2.setRowli_row Return END IF NEXT //保存dw_2.SetTransObjectsqlca if dw_2.update 1 then commit messageboxquot提示信息quotquot保存成功quot dw_2.ScrollToRowdw_2.RowCount else ls_error sqlca.sqlErrText rollback messageboxquot提示信息quotquot保存失败quot char13 ls_errorstopSign return end if //断开数据库af_disconnect //打印按钮通用脚本if dw_1.rowCount gt 0 then if PrintSetup -1 then messagebox提示信息打印机设置出错Exclamation return else if dw_1.printtrue 1 then //显示可以取消打印的对话框Messagebox提示信息quot打印成功quot else Messagebox提示信息quot打印失败quotstopSign end if end if else Messagebox提示信息quot没有数据可以打印请先查询数据quotexclamation return end if //导出按钮通用脚本if dw_1.rowcount lt 0 then messageBox提示信息没有数据可以导出请先查询exclamation return end if ifdw_1.SaveAStexttrue 1 then messageBox提示信息导出成功end if //导入按钮通用脚本//变量定义string ls_pathfilels_filels_titlels_extls_filter int li_posli_fileid longll_buffer //变量赋值ls_title quot请选择数据文件quot ls_ext quottxtquot ls_filter quot文本文件.txt.txt全部文件..quot li_fileidGetFileOpenNamels_titlels_pathfilels_filels_extls_filter ifli_fileid 0 or ls_file quotquot then return end if sle_file_name.text ls_pathfile cb_ok.enabled true //退出按钮通用脚本closeparent 或closeWithReturnparentreturnvalue //调用过程通用脚本if dw_wp.rowcount lt 0 then return //变量定义string ls_sqlls_err_info stringls_register_numberls_accept_cityls_departmentls_oper_person integerli_err_codeli_apply_event //变量赋值ls_register_numberdw_wp.getitemstring1register_number ls_accept_city gs_citycode li_apply_eventdw_wp.getitemnumber1apply_event ls_department gl_dealerid ls_oper_persongs_workerid //连接数据库af_connect //调用配号撤单过程ls_sql quotexecutebb_pstn_assign_no_repeal_pquot declare proc_assign_no_repeal dynamic cursor for sqlsa prepare sqlsa from :ls_sql open dynamic proc_assign_no_repealusing :ls_register_number:ls_accept_city:li_apply_event:ls_department:ls_oper_person if sqlca.sqlcode -1 then ls_err_info sqlca.sqlErrText close proc_assign_no_repeal Rollback Messageboxquot错误信息1quotquot执行异常quot ls_err_infostopSignaf_disconnect return End if fetch proc_assign_no_repeal into :li_err_code:ls_err_info if li_err_code lt 0 then close proc_assign_no_repeal Rollback Messageboxquot错误信息2quotquot执行异常quot ls_err_infostopSign af_disconnect return end if closeproc_assign_no_repeal commit //断开数据库af_disconnect //撤单成功后打印工单dw_wp.print //PB某些控件的中文显示问题假如PB 的ListView 不能正常显示中文则应该将ListView 的FontCharSet 属性设置成其他类型。
pb技巧八则
设置完毕后在左下角预览窗口中将显示图例的结果。
在进行列自动折行显示的时候,还要注意一点,系统判断自动折行的断点是以空格或标点符号为依据的,如果我们输入一长串字符且中间没有任何标点符号或空隔的话,即使该字符串再长也无济于事。因此,我们一定要提醒用户在录入时适当的加入一些空格或回车。
本文介绍的方法和技巧都是笔者在实践中的一点积累,在此拿出来与大家一起分享。希望在阅读本文后会对您有所帮助或启发。文中如有任何不足之处还望同行们给予指教。在此,我先道声谢。
一、实现运行窗口居中
众所周知,PowerBuilder 7.0在以前的版本中提供了图形化的预览工具,可以很方便的在设计阶段实现窗口居中。但是,到了7.0似
2、在它的表达式栏中写上“ '(' + PC + ' )' + Province + City + Address ”
3、单击确定完成。
很容易是不是。需要提醒大家的是,计算域只能用来显示,不能对它进行修改,因为它没有TAB属性,不能得到焦点。
三、数据窗口中的条码显示
在数据窗口中显示条码是不是很神秘?这对于没有接触过条码的人来说也许是这样。其实,它简单的不能再简单了。别忘了我们在写文稿时是如何使文稿看上去更有艺术化。没错我们会给它用上各种字体。问题不就解决了吗?条码也是种字体,只不过我们看不懂罢了。我们只要将需要用条码显示的字段的字体换上相应的条码字体就行了,比如,常用的3 of 9条码字
str_MyTime.iYear = 2000 // 2000年
str_MyTime.imonth = 8 / /8月
str_MyTime.iDay = 10 // 10日
PB数据窗口技巧问答
PB数据窗口技巧问答PB(PowerBuilder)是一种集应用程序开发、部署和维护于一体的集成开发环境(IDE)。
PB数据窗口是PB的核心组件之一,用于与数据库交互和显示数据。
以下是一些PB数据窗口技巧的问答,帮助您更好地理解和使用PB数据窗口。
1.什么是PB数据窗口?PB数据窗口是PB的一个重要组件,用于与关系型数据库进行交互和显示数据。
它提供了丰富的功能,包括数据检索、修改、删除和插入等。
数据窗口可以通过自动生成的SQL语句或手动编写的SQL语句来实现与数据库的交互。
2.PB数据窗口有哪些类型?PB数据窗口有多种类型,包括查询数据窗口(Browse DataWindow)、单行数据窗口(Single Row DataWindow)、自由形式数据窗口(Freeform DataWindow)和图表数据窗口(Graph DataWindow)等。
每种类型都适用于不同的数据交互和显示需求。
3.如何创建一个PB数据窗口?创建PB数据窗口可以通过PB的IDE界面进行操作。
首先,打开PB的设计视图,在对象树中选择需要添加数据窗口的PBL或PBT文件。
然后,在菜单栏中选择 File -> New -> DataWindow,根据需要选择数据窗口类型并完成相关设置。
最后,设计数据窗口的外观和布局,并与数据库进行绑定。
4.PB数据窗口如何与数据库交互?PB数据窗口可以与数据库进行交互,并对数据进行增、删、改、查操作。
在设计视图中,可以绑定数据窗口的SQL语句或存储过程,通过调用数据窗口的相应方法或事件触发数据库操作。
数据窗口还可以设置过滤器、排序、分组和连接等功能,实现更复杂的数据处理逻辑。
5.如何在PB数据窗口中显示数据?PB数据窗口可以通过数据源对象(如数据库表或查询)来显示数据。
在设计视图中,可以设置数据窗口的数据源属性为相应的数据源对象,然后通过设计数据窗口的布局和样式,以及定义显示数据的参数和条件,来展示数据。
60个PB数据窗口技巧
60个PB数据窗口技巧数据窗口是一种用于展示数据的工具,它可以帮助用户更好地理解和分析数据。
下面是60个PB数据窗口技巧,帮助您更高效地使用数据窗口。
1.在数据窗口左下角的栏中输入关键词,可以快速筛选显示您所需的数据。
2.使用鼠标右键单击数据窗口的列头,可以自定义列的显示与隐藏。
3.在数据窗口的列头拖动可以更改列的顺序和宽度。
4.在数据窗口的列头双击,可以按该列进行排序。
5. 使用Ctrl键与鼠标左键选择多列,可以同时对这些列进行操作。
6.点击数据窗口的行头,可以选择整行。
7. 使用Shift键与鼠标左键选择多行,可以同时对这些行进行操作。
8.双击数据窗口的行头,可以自动调整该行的高度,使其适应内容。
9.在数据窗口的列头右键单击,可以进行更多的列操作,如冻结列、设置列格式等。
10. 使用Ctrl+Enter键,可以在当前单元格中插入换行符。
11. 使用Ctrl+D键,可以复制当前单元格的内容到下一个单元格。
12.在数据窗口的列头左键单击,可以选择一整列。
13. 使用Ctrl+Shift键与鼠标左键选择多个非连续的列。
14.在数据窗口的列头上方的空白区域右键单击,可以选择整个数据窗口。
15.在数据窗口左上角的复选框,可以选择或取消选择整个数据窗口。
16. 使用Ctrl+C键,可以复制选中的单元格或整行到剪贴板。
17. 使用Ctrl+V键,可以粘贴剪贴板中的内容到当前单元格或行。
18. 使用Shift+Enter键,可以在当前单元格下方插入一行。
19. 使用Ctrl+K键,可以在当前单元格中插入一个链接。
20. 使用Ctrl+Space键,可以选择整列。
21. 使用Shift+Space键,可以选择整行。
22.在数据窗口的列头右键单击,可以选择“筛选”,进行高级筛选操作。
23.在数据窗口的列头右键单击,可以选择“合并”,将相邻的相同内容的单元格合并为一个。
24.在数据窗口的列头右键单击,可以选择“拆分”,将合并的单元格拆分回原来的单元格。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PB中一些技巧
1.RGB函数计算公式: 颜色值= (65536 * Blue) + (256 * Green) + (Red)
2.控件可拖动:
send(handle(this),274,61458,0)
3.如何用程序控制下拉子数据窗口的下拉和收起
用modify或者直接用dw_1.object.col1.dddw.showlist = true
4.检索参数有些不需要传入则传%.
5.如何屏蔽鼠标滚轮触发
在控件的other事件写
if message.number = 522 then return 1
6.得到数据窗口的语法:
string ls_dwsyntax
ls_dwsyntax=dw_1.describe("datawindow.syntax")
7.得到数据窗口中各列及标题:
long ll_count,i
string ls_value,ls_colname
ll_colnum = Long(dw_1.object.datawindow.column.count)
for i = 1 to ll_colnum
//得到标题头的名字
ls_colname = dw_1.describe('#' + string(i) + ".name") + "_t"
ls_value = dw_1.describe(ls_colname + ".text")
next
8.在程序中动态设置初始值:
ex:dw_contro.object.columnName.initial = 'xxxx'
9.如何在DataWindow的SQL语法中不使用SELECT DISTINCT实现删除重复的行
---- 起先对你要显示唯一值的列进行排序:"city A",然后增加如下过滤字符串:" city < > city [-1] or GetRow () = 1"
10.如何改变列的字体颜色,提醒用户此列已做修改
---- 在列的Color属性中,输入如下表达式IF (column_name
< >column_name.Original, RGB(255, 0, 0), RGB(0, 0, 0))。
在这个条件中,如果此列已改变,则显示红色字体,否则显示黑色字体。
这个表达式主要用column_name < > column_name.Original比较当前列的值和原始列的值是否相同来达到判断的目的。
11.在数据窗口的clicked或doubleclicked事件中写上注释//可解决一些意外的bug!
12.如何屏蔽上下鍵触发
新建一个事件:id为pbm_dwnkey
IF KeyDown(KeyDownArrow!) OR KeyDown(KeyUpArrow!) Then
Return 1
End IF
13.你注意到没有,数据窗口画板里面,在写表达式的时候,试着用一些用户自定义的全局变量和全局函数,你会发现在某些特殊的场合,这个小窍门还是很有用的。
14.有些程序员在窗口的右键pop菜单里面写了很多代码,在菜单里面有很多
w_windowname.controlname等等引用,如果这个窗口被继承,很容易就会出毛病,别忘了在菜单里面可以引用parentwindow哦,有了它我的pop菜单里面的代码和具体窗口无关,随便继承。
当然强烈建议最好还是把所有和窗口相关的逻辑都转移到窗口的函数和事件中去,在pop菜单中触发调用。
15.whichdw.describe("evaluate('lookupdisplay("+colname+")',"+string(r ow)+")")
这个表达式可以得到指定列的显示值。
(这个知识点有滥竽充数之嫌,但是一时间我真是想不起来太多的东西)
16.在数据窗口画板里面我们如果想要比较当前行和上一行或者下一行的值,怎么比较呢,哈哈,看这个就知道了。