????问过好几次的问题了,关于打印????
与quickrep相连的表中字段为:姓名 成绩
请问如何输出下面格式的报表:
姓名 张三 李四 王五
成绩 100 95 88
问题点数:35、回复次数:21Top
1 楼hyl_1978(summer)回复于 2001-11-30 10:47:10 得分 0
还是没人回答,是不是我没说清楚??Top
2 楼genphone_ru(哎,什么都要学,真累)回复于 2001-11-30 10:49:59 得分 0
用QRLabel直接赋值吧!Top
3 楼marysxj(走自己的路,让别人打的去吧!)回复于 2001-11-30 10:51:00 得分 0
我有一种方法,但是可能比较麻烦.没有试过行不行.不过,你这里如果数据库里有两个重名字的人,就不好办了.你的问题能否具体一点?Top
4 楼kories(老实疙瘩)回复于 2001-11-30 10:56:20 得分 0
quickrep是比较基础的报表制作组件,不支持太灵活的报表打印。
你可以在数据库的角度解决这个问题,这也的话,就变成了一个记录-字段(所谓行变列)的经典问题,是比较容易解决的,通过SQL语句,将那个表转换为你所要的报表的二维表的格式,问题就迎刃而解了。
知道怎么搞吗?通过一个游标(Cursor)对那个表的记录进行循环,把记录对应Create成临时表的一个字段,然后Union在一起就OK了。
如果你用SQL Server数据库,我可以给你提供相关的SQL Source Code,我在Handle台北市环保局的MIS专案时候,指导程序员做了N*M个那种报表,都是很复杂的,一个Stored Procedure要些几百行!Top
5 楼hyl_1978(summer)回复于 2001-11-30 10:58:38 得分 0
marysxj:没有重名的。
就拿我举的这个例子来说吧!
非常感谢!
Top
6 楼hyl_1978(summer)回复于 2001-11-30 11:02:48 得分 0
kories:我用的是sql server。
请把 SQL Source Code e-mail给我吧
e-mail:haoyongli2000@163.comTop
7 楼marysxj(走自己的路,让别人打的去吧!)回复于 2001-11-30 11:08:22 得分 0
你等一会,我试试行不行再给你Top
8 楼AP()回复于 2001-11-30 11:10:02 得分 0
1 自己写打印的程序就行了,不需要使用 QuickReport
2 将需要的数据按需要的格式生成到表中 再用 QuickReport
3 找一支持该功能的组建Top
9 楼hyl_1978(summer)回复于 2001-11-30 11:17:16 得分 0
小丸子,好了吗?Top
10 楼hyl_1978(summer)回复于 2001-11-30 11:24:32 得分 0
ap(),你的意思是不是需要动态生成,
我还不会动态生成表,能不能详细点?Top
11 楼hyl_1978(summer)回复于 2001-11-30 11:26:02 得分 0
老实疙瘩,还有别的作报表的工具吗?Top
12 楼adailee(Adai Lee)回复于 2001-11-30 11:29:55 得分 0
我做报表,总是先写一个存储过程,取的一张和报表类似的结果集,
然后在快速报表中直接使用。这样前端工作最少。
在存储过程中翻转行列不是很难吧?Top
13 楼hyl_1978(summer)回复于 2001-11-30 11:32:05 得分 0
adailee(不谈恋爱的铅笔) :
麻烦你告诉我怎样在存储过程中翻转行列? Top
14 楼kories(老实疙瘩)回复于 2001-11-30 11:38:29 得分 0
Adailee的意见我认为不错的,我也指导我的程序员这样干,尽量使Client端瘦起来。
我EMail给你类似的Stored Procedure好了,不过比较复杂,你要仔细读。Top
15 楼hyl_1978(summer)回复于 2001-11-30 11:39:17 得分 0
关注关注关注关注关注关注关注!!!!!Top
16 楼hyl_1978(summer)回复于 2001-11-30 11:41:53 得分 0
老实疙瘩,先谢谢你了。Top
17 楼marysxj(走自己的路,让别人打的去吧!)回复于 2001-11-30 11:50:34 得分 0
我给你发了一个例子,你自己看看吧,我没有时间了,非常抱歉.Top
18 楼kories(老实疙瘩)回复于 2001-11-30 12:46:19 得分 35
/*********************************************************************
--Fuction: 行变列
--Author: Kories
--LastUpdate: 2001/11/30
*********************************************************************/
If exists (
select * from sysobjects
where id = object_id('MyProc') and sysstat & 0xf = 4
)
drop procedure MyProc
go
create procedure MyProc
as
begin
create table #MyTmpTable(
姓名·成绩 char(8)
)
declare C1 cursor for
select * from Table1
open C1
declare @ID smallint,@Name Varchar(10),@Ach Float
fetch C1 into @ID,@Name,@Ach
while @@fetch_status=0 begin
exec('alter table #MyTmpTable add '+'F'+@ID+' Varchar(10)')
fetch C1 into @ID,@Name,@Ach
end
close C1
--以上程序建立临时表结构
insert #MyTmpTable(姓名·成绩) values('姓名')
insert #MyTmpTable(姓名·成绩) values('成绩')
--以上插入静态记录
open C1
fetch C1 into @ID,@Name,@Ach
while @@fetch_status=0 begin
exec('update #MyTmpTable set '+ 'F' +@ID + '=' + ''''+ @Name +'''' + ' where 姓名·成绩=' + '''' + '姓名' + '''')
exec('update #MyTmpTable set '+ 'F' +@ID + '=' + ''''+ @Ach +'''' + ' where 姓名·成绩=' + '''' + '成绩' + '''')
fetch C1 into @ID,@Name,@Ach
end
--以上程序插入动态记录
close C1
deallocate C1
--释放变量
select * from #MyTmpTable
--得到结果集
end
go
/*执行下边Sql Script得到表结构
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Table1]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[Table1]
GO
CREATE TABLE [dbo].[Table1] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[Name] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[Ach] [float] NULL
) ON [PRIMARY]
GO
*/
你好,我看了一下台北环保局MIS的Source Code,委实太复杂了,500行的Stored Procedure你没有完整的Database Shcema,很难看懂,就给你写了个简单的,你看一下,在Sql2000下运行OK。我写的只是例子程序,你要改造为实用的,要自己花一些工夫,比如,有可能存在总计一类的东东,你自己研究吧,其实都很简单。一定要把Cursor用熟,用灵活,很多数据可以两级以上Cursor套起来查询得到。OK?祝你好运,如果有疑惑再问。Top
19 楼belllab(菜鸟)回复于 2001-11-30 13:08:15 得分 0
在报表的ONNeedData中自己获取数据就行了Top
20 楼txinfo(冰炎两重天)回复于 2001-11-30 15:01:26 得分 0
放张凳子,旁听一下
呵呵,系统居然不让偶只录入gzTop
21 楼spell(问到底)回复于 2001-11-30 15:52:10 得分 0
有个笨办法.
1.定义一个足够大的固定二维数组,将表中的数据存入数组中.
2.在quickrep中先设定好足够多的QRDBtext控件.
3.在每次打印之前先将每个控件符值ok!Top
相关问题
- 问了好几次都没人回答的问题
- 关于QueryString ,UrlEncode ,UrlDecode的问题,问了好几次了
- 这个问题提了好几次了 总是没有答案!!!!
- 个性化界面问题,好几次没有一个人回?
- 求助啊!!!帮我!!已经问了好几次了
- webbrowser控件如何实现打印当前网页?我问了好几次了、也试了也没成功。难道就没人回答我了吗?我出100分!
- 这个问题我发了好几次也发不上去为什么?
- 发了好几次都没人解决的问题!~~~ATL的调用
- ActiveReport 2.0打印时, 预览只有一页, 为何打出时, 后面还跟一张空白纸? 试了好几次次都这样。
- 问了好几次的问题谁能给我一个完美的答复再加分.




