PB数据窗口中各项指标的获取方法

1、得到当前鼠标所指对象所在的带区

  string str_band

  str_band=GetBandAtPointer() //得到当前鼠标所指对象所在的带区

  str_band=left(str_band,(pos(str_band,‘~t‘) - 1))//得到"header"、"detail"等

  if str_band<>‘header‘ then return //单击非头区,退出

2、得到鼠标指向的列对象名

  str_object=GetObjectAtPointer() //得到当前鼠标所指对象名

  str_object=left(str_object,(pos(str_object,‘~t‘) - 1))

  //得到列对象名(默认为列名_t为列标题)

  str_column=left(str_object,(len(str_title) - 2))

  //判断该名称是否为列名字

  if this.describe(str_column+".band")=‘!‘ then return //非是列名,即列标题不是按正常规律起名的。

3、得到当前行、列,总行、列 //this 针对数据窗口而言

  li_col = this.GetColumn()

  li_ColCount = long(describe(this,"datawindow.column.count"))

  ll_row = this.GetRow()

  ll_RowCount = this.RowCount()

  //设置当前行、列

  scrolltorow(this,ll_Row)

  setrow(this,ll_Row)

  setcolumn(this,li_col)

  this.SetFocus()

4、得到所有列标题

  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

5、如何用代码取得数据窗口汇总带计算列的值?  

  String ls_value

  ls_value = dw_1.Describe("Evaluate("‘compute_1‘,1)")

  //如果是数值型,要转换。

6、取得单击的列标题、列名、数据库字段名

  string ls_dwo

  long ll_pos

  string ls_type

  string ls_title

  string ls_column

  string ls_dbname

  if Not KeyDown(KeyControl!) then return

  ls_dwo = dwo.Name

  if trim(ls_dwo) = ‘‘ or isnull(ls_dwo) then return

  ls_type = This.describe(ls_dwo + ‘.type‘)

  if ls_type = ‘column‘ then

   ls_title = This.describe(ls_dwo + ‘_t.text‘)//标题

   ls_column = This.describe(ls_dwo + ‘.Name‘) //数据窗口列名

   ls_dbname = This.describe(ls_dwo + ‘.dbname‘) //数据库中字段名

   messagebox(‘信息‘, ‘标 题 文 本 :‘ + ls_title + &

   ‘~r~n数据窗口列名 :‘ + ls_column + &

   ‘~r~n数据库中字段名:‘ + ls_dbname )

  end if

7、窗口为w_gcde内,放入一个DW_1,如何得到dw_1内的某列值yuonghu_id列的内容

  long lng_column_count

  integer i

  string str_column[] //列名

  string str_column_text[]  //text的名字

  //得到数据窗口的总列数

  lng_column_count = long(dw_1.Describe("DataWindow.Column.Count"))

  //循环依次读取

  for i = 1 to lng_column_count

   str_column[i] = dw_1.Describe("#"+string(i)+".name")

   str_column_text[i] = dw_1.Describe(str_column[i] + "_t.text")

  next

8、定义要打印的页码

  dw_1.Modify("DataWindow.Print.Page.Range=‘"+sle_1.text+"‘")

  dw_1.print()

9、取到当前是第几页

  dw_1.describe("evaluate(‘page()‘,"+string(dw_1.getrow())+")")

  //注意返回值是STRING型的

10、每15行统计一次

  在 summary 栏中写 ceiling(Getrow()/15)

11、如何判断当前行是不是当前页中的最后一行

  if dw_1.getrow()=long(dw_1.describe("datawindow.lastrowonpage")) then

  else

  end if

原文地址:https://www.cnblogs.com/ziyun20160613/p/10976759.html

时间: 2024-10-31 19:02:29

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 中

pb数据窗口类型

pb数据窗口有11种类型,Grid表格.Tabular列表.Crosstab交叉列表.N-Up分栏.Group分组.Label标签.RichText超文本.OLE2.0外部文本.Graph统计图.Composite复合.Freefrom自由格式. 如图所示 我们常用的是gird,freefrom这两种. 综合来看主要是四类风格:表类(Grid表格.Tabular列表.Crosstab交叉列表.N-Up分栏.Group分组),文本类(Label标签.RichText超文本.OLE2.0外部文本),

PB数据窗口其他知识

//////////////////////////////// 标识当前行 〓标识当前行也就是给当前行加上醒目的标记,以便用户更清楚当前要对哪一行数据进行操作,尤其当用户的操作中间有停顿时,继续进行操作就特别需要知道哪个是当前行.这里的当前行不要狭隘地理解成仅仅是光标所在行.当翻页时如果光标所在行不在当前页中,这时应该将当前页中的第一行置为当前行,否则容易造成错觉:当删除数据时,不能自动改变当前行,此时应该使用脚本设置当前行. 标识当前行的函数和方法很多,比较常用的有SelectRow,Set

pb数据窗口如何按当前列的值过滤下拉数据窗口(翻译)

假设我们的订单系统,有"新增"."待定"."提交"."取消"四种状态,新增的定单只能修改为"取消"和"待定"状态,"待定"的订单只能改变为"取消"和"提交"的状态."取消"和"提交"状态的订单得订单状态不能被改变. 现在我们假设数据窗口把所有的订单都显示了出来,显示的列有"订单号

Sql Server删除数据表中重复记录 三种方法

本文介绍了Sql Server数据库中删除数据表中重复记录的方法. [项目]数据库中users表,包含u_name,u_pwd两个字段,其中u_name存在重复项,现在要实现把重复的项删除![分析]1.生成一张临时表new_users,表结构与users表一样:2.对users表按id做一个循环,每从users表中读出一个条记录,判断new_users中是否存在有相同的u_name,如果没有,则把它插入新表:如果已经有了相同的项,则忽略此条记录:3.把users表改为其它的名称,把new_use

pb数据窗口下拉数据窗口列的排序(翻译)

datawindow是一个功能强大而且扩展性很强的工具,一个非常好的功能能够让用户点击列头对datawindow中的列进行排序. 排序功能还允许你指定列对数据窗口进行排序,这个功能对大多数的列都能够使用,但是他却不能对有下拉数据窗口列进行排序.原因就是 这个排序的功能是通过列的值进行排序的而不是显示值. 解决这个问题的的办法是可以使用LookUpDisplay这个函数,这个功能能够返回列的显示的值,通过对lookupdisplay(列名)这个函数排序, 数据窗口就能对这个显示值进行排序了. dw

pb数据窗口新增的列编辑后不会分行

在做一个数据窗口时,用户的需求希望数据窗口的某列如果有4个字的话能够分行显示,百度了一下,发现有很多方法,比如在editchanged事件中用this.accpettext()的方法,试了下,发现不行,最后发现这样可以. 1.在这列的autoheight打上勾. 2.这列的高度拖成能够显示的样子. 3.然后把这列的Auto Horz Scroll,Auto Vert Scroll,Horz Scroll Bar,Vert Scroll Bar这四个属性的勾都打上 发现就可以了.

PB数据窗口只存储过程数据源创建

必须在 Manual Rault Set 上打勾,不然不能设置显示列. 显示列的数据必须和存储过程返回值的顺序一致,否则会出现数据和列名两边不对应的情况 原文地址:https://www.cnblogs.com/Bokeyan/p/11751721.html

pb 数据窗口是否包含指定范围内的日期

ls_date=string(TODAY(),"YYYY-MM-DD") //当天时间转换为字符串 ld_date=date(ls_date)//将今天的时间转换成date类型 ld_date_new=RELATIVEDATE(TIME1,5)//今天的时间向后推5天 ll_num=DaysAfter ( date1, date2 ) + 1 //两个日期间隔天数,ll_num>0,date2>date1;ll_num < 0,date2<date1. 菜鸟落户