急,关于多列报表问题

nb20022 2003-09-22 09:07:37
部门名称 人员名称 金额 部门名称 人员名称 金额
办公室 统计室
a 100 e 200

b 100 g 300
小计 200 小计 700


统计室 合计 900
c 100
d 100

表结构:
部门 VARCHAR(10)
人员名 VARCHAR(30)
金额 DECIMAL(2)

以上报表如何实现.客户要求打印到底后,换一列
谢谢
急,关于多列报表问题




...全文
27 点赞 收藏 11
写回复
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
jimly 2003-09-25
1、假设你哪个表是test,建个视图VIEW_test:

CREATE VIEW dbo.VIEW_test
AS
SELECT DISTINCT '0' + 部门 AS p1, 部门 , '' as 人员名, NULL as 金额 FROM test
UNION
SELECT '0' + 部门 + '1' AS p1, 部门, 人员名, 金额
FROM test
UNION
SELECT '0' + 部门 + '2' AS p1, '小计' as 部门 , '' as 人员名, SUM(金额) as 金额
FROM test
GROUP BY 部门
UNION
SELECT '1' + '总计' AS p1, '总计' as 部门 , '' as 人员名 , SUM(金额) as 金额
FROM test

2、用view_test建个grid数据窗口(也可用freeform),只显示后三列,用第一列排序
在数据窗口属性得print specifications得newspaper columns across及newspaper columns
width 设置显示几列,和列宽

3、同一个部门,部门字段如之显示一次,则
dw.Modify("datawindow.sparse='部门'") //大概如此

够详细了吧?!
回复
jdsnhan 2003-09-24
你不清楚,我也不清楚,打印到底后,换一列,到底是什么意思。你用什么格式的报表。
回复
zhangdatou 2003-09-24
用一个grid数据窗就能解决问题呀
回复
nb20022 2003-09-24
我还是不太清楚
我的EMAIL 是xr11@sohu.com
有没有例子
谢谢
回复
jimly 2003-09-23
多列好说,可以设列数和列宽
dw.modify("datawindow.print.columns = 2")
dw.modify("datawindow.print.columns.width = 1000"

统计由于涉及到科室和小计合计就麻烦点了
要不就自己编程处理,要不就写个复杂的查询语句,
假设表明为test,sql sever下可以这样写:

SELECT DISTINCT '0'+部门 AS p1, 部门, '', NULL FROM test
UNION
SELECT '0'+部门 + '1' AS p1, 部门, 人员名, 金额 FROM test
UNION
SELECT '0'+部门 + '2' AS p1, '小计', '', SUM(金额) FROM test GROUP BY 部门
UNION
SELECT '1'+'总计' AS p1, '总计', '', SUM(金额) FROM test
ORDER BY p1

第一列用于排序,不要显示。

格式调整,部门相同的列只显示第一行:
dw.Modify("datawindow.sparse='部门'") //大概如此
回复
workhand 2003-09-23
用存储过程做一个临时表,dw retrieve 加合计列,打印
回复
nb20022 2003-09-23
up
回复
nb20022 2003-09-22
我去试试
回复
liliang800207 2003-09-22
用复合数据窗口把
回复
klbt 2003-09-22
是N_up型数据窗口吗?
回复
smartstarchen 2003-09-22
使用外部数据源,将表中数据插入到数据窗口中。
回复
发动态
发帖子
DataWindow
创建于2007-09-28

568

社区成员

PowerBuilder DataWindow
申请成为版主
社区公告
暂无公告