• 主页
  • API 调用
  • 基础类
  • 控件与界面
  • 数据库相关
  • DataWindow
  • 项目管理
  • Web 应用
  • 脚本语言

关于N-UP报表问题

smallroad 2005-09-22 12:18:04
请问各位高手:
我要做一个数据报表是N-UP格式如下:

房间1 大包 房间2 大包 房间3 大包

房间4 大包 房间5 大包

房间6 小包 房间7 小包 房间8 小包

房间9 小包

房间10 中包 房间11 中包 房间12 中包

房间13 中包 房间14 中包

请问以上格式如何实现?万分感谢!
...全文
167 点赞 收藏 10
写回复
10 条回复
jiangxj 2005年09月30日
//dw_2:辅助用。 按1)包房2)房间排序
//dw_1:N-UP分三列

long i,j=0
ls_bf=dw_2.object.包房[1]
dw_1.reset()

for i=1 to dw_2.rowcount()
j=j+1
dw_1.insertrow(0)
if dw_2.object.包房[i]=ls_bf then
dw_1.object. .包房[j]=ls_bf
dw_1.object. .房间[j]= dw_2.object. .房间[i]
else
if mod(j,3)=1 then
ls_bf=dw_2.object.包房[i]
dw_1.object. .包房[j]=ls_bf
dw_1.object. .房间[j]= dw_2.object. .房间[i]
else
for k=1 to 3-mod(j-1,3)
j=j+1
dw_1.insertrow(0)
next
end if
end if
next
回复 点赞
zdnest 2005年09月30日
能不能取完数据以后,先判断每一类除三后余几,余1就增加2条,余2增加1条,然后再显示出来?
回复 点赞
老板卤两个蛋蛋 2005年09月30日
//我的每行排的六个 参考一下吧

//相同类别的记录压缩

long ll_temp, ll_currRow
int li_insert
string ls_newType

if dw_1.rowCount() < 1 then return

ls_newType = trim (dw_1.getItemString (1, "申请的准驾车型代号") )
ll_currRow = 2
do while ll_currRow <= dw_1.rowCount ()
if trim ( dw_1.getItemString (ll_currRow, "申请的准驾车型代号") ) = ls_newType then
dw_1.setItem (ll_currRow, "申请的准驾车型代号", '' )
else
//插入几个空行,新的类别排到下一行
ls_newType = trim ( dw_1.getItemString (ll_currRow, "申请的准驾车型代号") )
ll_temp = ll_currRow - 1
ll_temp = mod (ll_temp, 6)
ll_temp = 6 - ll_temp
ll_temp = mod (ll_temp, 6)
for li_insert = 1 to ll_temp step 1
ll_currRow = dw_1.insertRow (ll_currRow)
dw_1.setRow (ll_currRow)
ll_currRow ++
next
end if
ll_currRow ++
loop
回复 点赞
老板卤两个蛋蛋 2005年09月30日
我做个你这个很类似的

方法就是一行一行的扫描 发现类型不一样而且记录数被3除不余一的话就插入空行
回复 点赞
smallroad 2005年09月29日
期待高手们的参与
回复 点赞
smallroad 2005年09月22日
房间1 大包 房间2 大包 房间3 大包
房间4 大包 房间5 大包
房间6 小包 房间7 小包 房间8 小包
房间9 小包
房间10 中包 房间11 中包 房间12 中包
房间13 中包 房间14 中包

前面是包间名称,后面是包间类别,N-UP是3列,我想按包间类别分开显示。
回复 点赞
hangzhou6274 2005年09月22日
看不懂,看不出规律
回复 点赞
hangzhou6274 2005年09月22日
好的方法我也没有了.
具体的做法就是统计大包间的总数,然后/3,判断能否整除,如果不能就补充insert不够的记录,重复小包间,中包间,完成以后用N-UP数据窗口,先排序就可以了.你insert的时候房间编号不要插入,只要插入房间的类别就可以了,然后在数据窗口的房间类别上写判断 if (房间名称 = '' or isnull(房间名称),0,1)这样就可以达到你要得目的了
回复 点赞
smallroad 2005年09月22日
能不能说详细点?有没有被的好方法?
回复 点赞
hangzhou6274 2005年09月22日
没戏,我做不出来,除非用程序先处理好数据.比如:一行三列,如果不够就不满三列,这样你先用房间类别排序在检索就可以了.
回复 点赞
发动态
发帖子
PowerBuilder
创建于2007-09-28

599

社区成员

6.6w+

社区内容

PowerBuilder 相关问题讨论
社区公告
暂无公告