( 郁闷,郁闷,一天竟然没有一个人进来回答 ) 请教高手,流水数据如何一列显示??? (100分)

  • 主题发起人 主题发起人 lixin38
  • 开始时间 开始时间
L

lixin38

Unregistered / Unconfirmed
GUEST, unregistred user!
一个表T1的就只有两个字段,就是打卡的流水记录
CardID(varchar(10)) DT(datetime)
1234567890 2004/06/01 08:00:00
1234567890 2004/06/01 12:05:00
1234567890 2004/06/01 14:02:00
1234567890 2004/06/01 18:02:00
1234567890 2004/06/02 07:50:00
1234567890 2004/06/02 18:02:00
。。。。。。。。。。。。。。
现在需要进行月报表的打印,我需要显示的报表格式是这样的:
CardID 1 2 3 4 .............31
08:00:00 07:50:00
1234567890 12:05:00 18:02:00
14:02:00
18:02:00
....................
也就是一天的记录希望显示在一个格子中,用FastReport应该如何实现呢?
希望能够给出具体SQL,谢谢!

我原来的思路:
临时表我用存储过程加游标但一个月数据有20万,
也就是要游20万条记录呀
插入到临时表中居然要10分钟
我想我的方法是有问题的!
 
都一天了,沒有一個人回答。
難道都沒有人懂還是不屑一顧???
 
用交叉表试试[:D]
 
晕了,你在ACCESS中建立一个表,结构如你所述,但要在加一个TNO字段,如:
tno CardID(varchar(10)) DT(datetime)
1 1234567890 2004/06/01 08:00:00
1 1234567890 2004/06/01 12:05:00
1 1234567890 2004/06/01 14:02:00
1 1234567890 2004/06/01 18:02:00
2 1234567890 2004/06/02 07:50:00
2 1234567890 2004/06/02 18:02:00
然后兴建一个查询,选择交叉表,你就可以按提示得到你想要的SQL语句了!
而且那个TNO也可以使用日期中的日来得到。祝你好运!
 
为求模加UNION试试。
 
以前也遇到过这个问题!不好弄,换其他方法
 
to fanronghua:
請問你是用是麼方法解決的呢?謝謝!
to CrazyCat:
然後能否再能否給出具體的代碼呢?謝謝!
 
我原來所用的方法是這樣的
建立一個臨時表ABCD,裡面有Cardid,以及1...31號,共32個字段
我所寫的存儲過程是這樣的,當然還有點問題

CREATE PROCEDURE SP_ABCD(@Year int,@Month int)
AS
begin
Declare @CardID varchar(16)
Declare @IODT datetime
Declare @RCount int
Declare @MDay int
Declare Cur_ABCD Cursor For
SELECT CardID, DAY(DT) AS MDay, CONVERT(VARCHAR, DT, 108) AS DTime from inout
WHERE Year(DT)=@Year and Month(DT)=@Month
GROUP BY CardID, DAY(DT),CONVERT(VARCHAR, DT, 108)
Open Cur_ABCD
FETCH NEXT FROM Cur_ABCD into @CardID,@MDay, @IODT
WHILE @@FETCH_STATUS <>-1
begin
if @MDay=1
begin
insert into ABCD(CardID,D1) Values(@CardID,@IODT)
end
else if @MDay=2
begin
insert into ABCD(CardID,D2) Values(@CardID,@IODT)
end
else if @MDay=3
begin
insert into ABCD(CardID,D3) Values(@CardID,@IODT)
end
else if @MDay=4
begin
insert into ABCD(CardID,D4) Values(@CardID,@IODT)
end
else if @MDay=5
begin
insert into ABCD(CardID,D5) Values(@CardID,@IODT)
end
else if @MDay=6
begin
insert into ABCD(CardID,D6) Values(@CardID,@IODT)
end
else if @MDay=7
begin
insert into ABCD(CardID,D7) Values(@CardID,@IODT)
end
else if @MDay=8
begin
insert into ABCD(CardID,D8) Values(@CardID,@IODT)
end
else if @MDay=9
begin
insert into ABCD(CardID,D9) Values(@CardID,@IODT)
end
else if @MDay=10
begin
insert into ABCD(CardID,D10) Values(@CardID,@IODT)
end
else if @MDay=11
begin
insert into ABCD(CardID,D11) Values(@CardID,@IODT)
end
else if @MDay=12
begin
insert into ABCD(CardID,D12) Values(@CardID,@IODT)
end
else if @MDay=13
begin
insert into ABCD(CardID,D13) Values(@CardID,@IODT)
end
else if @MDay=14
begin
insert into ABCD(CardID,D14) Values(@CardID,@IODT)
end
else if @MDay=15
begin
insert into ABCD(CardID,D15) Values(@CardID,@IODT)
end
else if @MDay=16
begin
insert into ABCD(CardID,D16) Values(@CardID,@IODT)
end
else if @MDay=17
begin
insert into ABCD(CardID,D17) Values(@CardID,@IODT)
end
else if @MDay=18
begin
insert into ABCD(CardID,D18) Values(@CardID,@IODT)
end
else if @MDay=19
begin
insert into ABCD(CardID,D19) Values(@CardID,@IODT)
end
else if @MDay=20
begin
insert into ABCD(CardID,D20) Values(@CardID,@IODT)
end
else if @MDay=21
begin
insert into ABCD(CardID,D21) Values(@CardID,@IODT)
end
else if @MDay=22
begin
insert into ABCD(CardID,D22) Values(@CardID,@IODT)
end
else if @MDay=23
begin
insert into ABCD(CardID,D23) Values(@CardID,@IODT)
end
else if @MDay=24
begin
insert into ABCD(CardID,D24) Values(@CardID,@IODT)
end
else if @MDay=25
begin
insert into ABCD(CardID,D25) Values(@CardID,@IODT)
end
else if @MDay=26
begin
insert into ABCD(CardID,D26) Values(@CardID,@IODT)
end
else if @MDay=27
begin
insert into ABCD(CardID,D27) Values(@CardID,@IODT)
end
else if @MDay=28
begin
insert into ABCD(CardID,D28) Values(@CardID,@IODT)
end
else if @MDay=29
begin
insert into ABCD(CardID,D29) Values(@CardID,@IODT)
end
else if @MDay=30
begin
insert into ABCD(CardID,D30) Values(@CardID,@IODT)
end
else if @MDay=31
begin
insert into ABCD(CardID,D31) Values(@CardID,@IODT)
end
FETCH NEXT FROM Cur_ABCD into @CardID,@MDay,@IODT
end
CLOSE Cur_ABCD
DEALLOCATE Cur_ABCD
end
GO
 
我也想知道
 
在原表地基礎上,再建立一個表T2
SELECT CardID, DAY(DT) AS MDay, CONVERT(VARCHAR, DT, 108) AS DTime from inout
GROUP BY CardID, DAY(DT),CONVERT(VARCHAR, DT, 108)
然後再跟Inout進行交叉,具體如何交叉可以看FastReport地例子23、13的報表例子
 
交叉表可以实现,但打印的格式比较怪,客户看了晕,呵呵
比如中间的横线如何加?
 
謝謝,基本可以,但的確還有其它問題
一天是橫的顯示能否改為豎的顯示呢?
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
855
import
I
I
回复
0
查看
790
import
I
后退
顶部