如何横向打印 ( 积分: 100 )

  • 主题发起人 主题发起人 webdou
  • 开始时间 开始时间
W

webdou

Unregistered / Unconfirmed
GUEST, unregistred user!
表结构
编号 姓名 工序号 件数
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可以解决吗,
 
表结构
编号 姓名 工序号 件数
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可以解决吗,
 
PrinterPreview.Orientation := poLandscape;
//横向打印
 
设置 Report Settings / Number of Columns
 
我觉得问题没有那么简单吧,各位,其中我的列数为固定,假定为20,一个人不可能有20道工序需要做的,
 
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
 
本人用的是access 2000,可以在程序中进行控制吗,这个函数及语句支持access 2000吗
 
怎么没有高手指点呀,
 
同意xianguo的想法
 
多人接受答案了。
 
后退
顶部