CSDN-CSDN社区-.NET技术-图表区

收藏 阿泰或其他高手请进!请教个问题!内详。[问题点数:200,结帖人:rockyvan]

  • rockyvan
  • (低調)
  • 等 级:
  • 结帖率:
楼主发表于:2008-05-05 23:03:21
数据库内有这样一个表A:
Name,Date,    Time1,Time2
xxxx,2008-2-1, 08:00,17:00
..........................
xxxx,2008-2-29,08:01,17:00
现在要用水晶报表做一个月的考勤报表,
要求:
把水晶报表详细资料固定为31行,一个月31天都出勤了正好全部填满。
月份中某天没有出勤的显示Name,Date,Time1,Time2空着。
大致如下:
Name,Date,    Time1,Time2
xxxx,2008-2-1, 08:00,17:00
xxxx,2008-2-2, 08:00,17:00
xxxx,2008-2-3, 08:00,17:00
xxxx,2008-2-4,            没有出勤空着
xxxx,2008-2-5, 08:00,17:00
xxxx,2008-2-6, 08:00,17:00
xxxx,2008-2-7, 08:00,17:00
xxxx,2008-2-8,            没有出勤空着
xxxx,2008-2-9, 08:00,17:00
xxxx,2008-2-10, 08:00,17:00
xxxx,2008-2-11, 08:00,17:00
...........................
xxxx,2008-2-29,08:01,17:00


没有30、31号,整行都空着,但这两行的空间还是要留出来。

回复次数:25
#1楼 得分:20回复于:2008-05-05 23:20:33
  • babyt用户头像
  • babyt
  • (阿泰)
  • 等 级:
#3楼 得分:0回复于:2008-05-06 09:50:04
xxxx,2008-2-4,            没有出勤空着

类似于这样的行,在数据中已经存在着还是不存在,需要在报表里主动补上呢?
#4楼 得分:0回复于:2008-05-06 09:52:03
引用 3 楼 babyt 的回复:
xxxx,2008-2-4,            没有出勤空着 

类似于这样的行,在数据中已经存在着还是不存在,需要在报表里主动补上呢?

數據庫裏面沒有,數據庫裏面都是考勤機採集的數據,沒有出勤當然就沒有數據。
#5楼 得分:0回复于:2008-05-06 09:53:37
我就是不知道怎麽在報表裏面補上,而且行數還要固定為31行,不足的留空。
想了一些方法都不行,所以上來請教你!
#6楼 得分:20回复于:2008-05-06 09:54:06
#8楼 得分:0回复于:2008-05-06 10:57:56
昏!發個帖子進來2個廣告的!
#9楼 得分:0回复于:2008-05-06 11:02:34
1樓、6樓的方法正在考慮。
不知有沒有這方面的例子?
怎麽往Dataset裏面補數據?
好像這種方法也不好處理月天數小於31的,因爲行數還要固定為31行,不足的留空。

  • babyt用户头像
  • babyt
  • (阿泰)
  • 等 级:
#10楼 得分:0回复于:2008-05-06 13:17:59
唉,这CSDN就老看不见最新的回复。
#11楼 得分:0回复于:2008-05-06 13:45:44
引用 10 楼 babyt 的回复:
唉,这CSDN就老看不见最新的回复。

一直有這個問題,你點結帖去就可以看到了。不是你發的帖子也可以點結帖去。
  • boblaw用户头像
  • boblaw
  • (黑马王子‧偷回忆的人)
  • 等 级:
  • 2

#12楼 得分:20回复于:2008-05-06 16:02:11
#13楼 得分:0回复于:2008-05-07 08:12:25
再加100分!此帖遲點結。
  • babyt用户头像
  • babyt
  • (阿泰)
  • 等 级:
#14楼 得分:30回复于:2008-05-07 10:40:38
#15楼 得分:0回复于:2008-05-07 10:49:46
謝謝!我先去做下看。
我開始想的辦法是,把31行+日期全部畫死,然後用數據庫裏面的日期跟畫的日期匹配,
控制28日,29日,30日,31日这样的行的显示。
#16楼 得分:20回复于:2008-05-07 11:01:45
#17楼 得分:20回复于:2008-05-07 16:16:23
#18楼 得分:0回复于:2008-05-08 12:45:39
引用 14 楼 babyt 的回复:
如果不编程的话,可以用如下方法:

加一个表(mydays),做一个日期序列。只要一个字段,dayno,数值型,值为1~31
假设数据表为mydata,日期字段为date1,做一个外连接
SELECT a.*, b.dayno
FROM mydata AS a RIGHT JOIN mydays AS b ON day(a.date1)=b.dayno

这样会出现一个1~31的序列,做一个公式将月份与这个序列拼接。然后进行显示。
再按照月份的限制,把每月28日,29日,30日,31日这样的行进行显示控制就可…

期待。
#19楼 得分:20回复于:2008-05-09 08:52:26
#20楼 得分:0回复于:2008-05-09 15:09:26
今天晚上結帖,謝謝各位了!
  • lx_lhy用户头像
  • lx_lhy
  • (心态决定一切,行动决定命运。)
  • 等 级:
#21楼 得分:20回复于:2008-05-09 16:39:06
  • babyt用户头像
  • babyt
  • (阿泰)
  • 等 级:
#22楼 得分:30回复于:2008-05-09 20:29:45
#23楼 得分:0回复于:2008-05-09 20:29:54
结了,辛苦各位!
#24楼 得分:0回复于:2008-05-09 20:32:37
引用 22 楼 babyt 的回复:
楼上的思路应该也是可行的,但是只加公式似乎是不行的。

要是rockyvan来得及,等我周末把这两个方案都做做看,这周太忙,实在没抽出时间来:)

来得及,我也是突然想到这个问题的。
#25楼 得分:0回复于:2008-05-09 20:35:39
我另外开帖等你回复,这里分不够分了。