当前位置:主页>仓库管理软件> 列表

如何横向打印

销售管理软件版1楼: 表结构
编号 姓名 工序号 件数
01 王 1 100
01 王 2 120
02 张 1 100
03 李 2 150
03 李 3 120
04 李 4 150
要求打印出如下结果
编号 姓名 工序号 件数 工序号 件数 工序号 件数 工序号 件数 工序号 件数
01 王 1 100 2 120
02 张 1 100
03 李 2 150 3 120 4 150
请问高手如何解决,本人用quickreport可以解决吗,

2楼: PrinterPreview.Orientation := poLandscape; //横向打印 如南京管家婆软件

3楼: 设置 Report Settings / Number of Columns

4楼: 我觉得问题没有那么简单吧,各位,其中我的列数为固定,假定为20,一个人不可能有20道工序需要做的,

5楼: 1. 行列转换--普通

假设有张学生成绩表(CJ)如下
Name Subject Result
张三 语文 80
张三 数学 90
张三 物理 85
李四 语文 85
李四 数学 92
李四 物理 82

想变成
姓名 语文 数学 物理
张三 80 90 85
李四 85 92 82

declare @sql varchar(4000)
set @sql = ''select Name''
select @sql = @sql + '',sum(case Subject when ''''''+Subject+'''''' then Result end) [''+Subject+'']''
from (select distinct Subject from CJ) as a
select @sql = @sql+'' from test group by name''
exec(@sql)

2. 行列转换--合并

有表A,
id pid
1 1
1 2
1 3
2 1
2 2
3 1
如何化成表B:
id pid
1 1,2,3
2 1,2
3 1

创建一个合并的函数
create function fmerg(@id int)
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str=''''
select @str=@str+'',''+cast(pid as varchar) from 表A where id=@id
set @str=right(@str,len(@str)-1)
return(@str)
End
go

--调用自定义函数得到结果
select distinct id,dbo.fmerg(id) from 表A

6楼: 本人用的是access 2000,可以在程序中进行控制吗,这个函数及语句支持access 2000吗

销售管理软件版7楼: 怎么没有高手指点呀,

8楼: 同意xianguo的想法

9楼: 多人接受答案了。