当前位置: 代码迷 >> PB >> 数据窗口子窗口排序,该如何解决
  详细解决方案

数据窗口子窗口排序,该如何解决

热度:85   发布时间:2016-04-29 07:06:19.0
数据窗口子窗口排序
父窗口列ss有子数据窗口
子数据窗口sql语句 select d1,d2,d3 from d groub by d1 asc

dw_1.getchild( "ss", lbwc_child)
lbwc_child.SetTransObject(sqlca)
li_rowcount = lbwc_child.retrieve()
lbwc_child.setsort("")
lbwc_child.SetSort("d2  asc") 
lbwc_child.Sort( )
if li_rowcount <= 0 then lbwc_child.insertrow(0)
string ls_sql
ls_sql = lbwc_child.GetSQLSelect()
messagebox('',ls_sql)

但是最后ls_sql还是select d1,d2,d3 from d groub by d1 asc
没有按select d1,d2,d3 from d groub by d2 asc排序

 // 网上还有说用后面这个 lbwc_child.SetSort("lookupdisplay( 'd2' ) asc") 同样效果还是没效果

感觉子窗口setsort没有起左右不知道怎么回事
请大侠们指教。。

------解决方案--------------------
1.select d1,d2,d3 from d groub by d1 这个语句不能运行,你在数据库里跑跑看
2.
lbwc_child.setsort("")
lbwc_child.SetSort("d2 asc")  
lbwc_child.Sort( )

写成

lbwc_child.setsort("")
lbwc_child.Sort()
lbwc_child.SetSort("d2 asc")  
lbwc_child.Sort( )

setsort() sort() 和 setfilter() filter()

一般都是一起出现,setsort(),setfilter()设置条件,sort(),filter()才是根据条件对数据处理


------解决方案--------------------
dw 的排序 dw.setsort() 和 dw.sort()
不会影响dw 构造该DW 的sql 语句的。

也可以在构造子DW 的SQL 里写 order by 
------解决方案--------------------
数据窗口的排序受两个位置的影响,一是在SQL语句中的order by子句,这种排序方式是在读出数据时就已排是排序完成的;另一种是setsort方式,是在数据读出后在数据窗口中进行的二次排序。
你这里使用setsort排序是第二种排序,是不会影响SQL语句的,如果想知道setsort是成功执行,可以通过<dwobject>.object.datawindow.table.sort来查看。
  相关解决方案