急!如何保存复合数据窗口中子数据窗口的SQL排序,过滤数据后又恢复

IT晓夏 2009-07-03 11:38:46
一个dw_print含有2个子dw,是dw_1,dw_2,原来dw_1已经在SQL中用collate按xm的姓氏笔划排序了,但在程序中要对dw_1做一些过滤、删除等处理,需要改变dw_1的sort,处理完还要恢复原来的姓氏排序,应该怎么保存出原来的排序条件???

我用dw_print.Describe("dw_1.DataWindow.Table.Sort")为什么取不出来??????
例子如下:
dw_print.settransobject(it_sqlca)
dw_print.retrieve()
if dw_print.rowcount()>0 then
if dw_print.GetChild("dw_1", dwc_orders)<>1 then //用于排序
close(w_wait_operate)
return
end if
dwc_orders.SetSort("bh A,psjg D")
dwc_orders.Sort( )
ll_bh = dwc_orders.getitemnumber(dwc_orders.rowcount(),'bh')
for ll_r=dwc_orders.rowcount()-1 to 1 step -1
if dwc_orders.getitemnumber(ll_r,'bh')=ll_bh then
dwc_orders.deleterow(ll_r)
else
ll_bh = dwc_orders.getitemnumber(ll_r,'bh')
end if
next

//然后在此还要恢复成原来的按姓氏笔划排序
...全文
135 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
woshilitao5 2009-07-03
  • 打赏
  • 举报
回复
describe 獲得的是字符串!
wag_enu 2009-07-03
  • 打赏
  • 举报
回复
适用于当 dw_print 是 composite类型的数据窗口
wag_enu 2009-07-03
  • 打赏
  • 举报
回复

//DataWindowChild mgr_id

dw_1.GetChild ("dw_1", mgr_id)

string ls_sort_old

ls_sort_old=mgr_id.describe("DataWindow.Table.Sort")

MessageBox( "", ls_sort_old)
singsongs 2009-07-03
  • 打赏
  • 举报
回复
dw_print.Describe("DataWindow.Table.Sort")取出来的是dw_print的sort方式,如果取子数据窗口的sort方式的话,用dw_1.Describe("DataWindow.Table.Sort")可以取出来。取出?可能是因为数据窗口没有排序的原因吧,我试了试,可以。
永生天地 2009-07-03
  • 打赏
  • 举报
回复
dw_print.settransobject(it_sqlca)
dw_print.retrieve()
if dw_print.rowcount()>0 then
if dw_print.GetChild("dw_1", dwc_orders) <>1 then //用于排序
close(w_wait_operate)
return
end if
//取出原来排序
string ls_sort_old
ls_sort_old=dwc_orders.describe("DataWindow.Table.Sort")

dwc_orders.SetSort("bh A,psjg D")
dwc_orders.Sort( )
ll_bh = dwc_orders.getitemnumber(dwc_orders.rowcount(),'bh')
for ll_r=dwc_orders.rowcount()-1 to 1 step -1
if dwc_orders.getitemnumber(ll_r,'bh')=ll_bh then
dwc_orders.deleterow(ll_r)
else
ll_bh = dwc_orders.getitemnumber(ll_r,'bh')
end if
next
//恢复原来排序
dwc_orders.Modify("DataWindow.Table.Sort='"+ls_sort_old+"'")
IT晓夏 2009-07-03
  • 打赏
  • 举报
回复
不行,第一个写法是错的,dw_1是复合dw中的对象,语法错;第二个取出的是个?号
newease 2009-07-03
  • 打赏
  • 举报
回复
我用dw_print.Describe("dw_1.DataWindow.Table.Sort")为什么取不出来??????

改为dw_print.describe("datawindow.table.sort")) 试试
永生天地 2009-07-03
  • 打赏
  • 举报
回复
string ls_sort_old
ls_sort_old=dwc_orders.describe("DataWindow.Table.Sort")
MessageBox( "", ls_sort_old)
newease 2009-07-03
  • 打赏
  • 举报
回复
获取数据窗口的排序

string ls_sort
ls_sort=string(dw_1.describe("datawindow.table.sort"))
sun1976 2009-07-03
  • 打赏
  • 举报
回复
你的排序是写在sql里的吧?你得数据窗口有设置排序吗?
而且还有个疑问:
你没有增加数据,过滤和删除都是减少数据,减少数据怎么会改变原有排序呢?

如果你在过滤等做了setsort操作,你直接最后再作一个setsort不就行了?既然知道是按照姓氏,也就是知道是按照哪个列,直接写一个setsort,何必非找原来的呢?
如果是sql中的排序,select列表没有orderby的字段,那么只有重新检索数据或者把这个字段加到select中,然后再数据窗口里隐藏
wag_enu 2009-07-03
  • 打赏
  • 举报
回复
测试了一下:
DataWindowChild dwc_orders
dw_print.GetChild ("dw_1", dwc_orders)
string ls_sort_old
ls_sort_old=dwc_orders.describe("DataWindow.Table.Sort")

MessageBox( "", ls_sort_old)

可以取出排序方法;
重置排序用:

dwc_orders.setsort(ls_sort_old)
dwc_orders.sort()


IT晓夏 2009-07-03
  • 打赏
  • 举报
回复
dwc_orders.describe("DataWindow.Table.Sort") 取不出来,值不对,
child窗口用dwc_orders.Modify("DataWindow.Table.Sort='"+ls_sort_old+"'")是否能对结果有影响?好象不会重新检索嘛
WorldMobile 2009-07-03
  • 打赏
  • 举报
回复

string ls_old_sort
dw_print.settransobject(it_sqlca)
dw_print.retrieve()
if dw_print.rowcount()>0 then
if dw_print.GetChild("dw_1", dwc_orders) <>1 then //用于排序
close(w_wait_operate)
return
end if
ls_old_sort = dwc_orders.describe("datawindow.table.order")
dwc_orders.SetSort("bh A,psjg D")
dwc_orders.Sort( )
ll_bh = dwc_orders.getitemnumber(dwc_orders.rowcount(),'bh')
for ll_r=dwc_orders.rowcount()-1 to 1 step -1
if dwc_orders.getitemnumber(ll_r,'bh')=ll_bh then
dwc_orders.deleterow(ll_r)
else
ll_bh = dwc_orders.getitemnumber(ll_r,'bh')
end if
next
dw_orders.setsort(ls_old_sort)
dw_orders.sort()

609

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧