Crystal reports 在Crystal Report中打印一个月的天数
我想在Crystal Report中打印给定月份的所有日期。这就是我的Crystal报告的样子: 诸如此类Crystal reports 在Crystal Report中打印一个月的天数,crystal-reports,days,Crystal Reports,Days,我想在Crystal Report中打印给定月份的所有日期。这就是我的Crystal报告的样子: 诸如此类 我所做的是,我创建了一个带有日期的表,当用户通过日期时间选择器选择一个月时,我的程序会将所选月份的所有日期插入到表中。尽管也可以在SQL级别尝试(如@Azing所建议的),如果您只想在Crystal Report级别执行此操作,您可以根据以下基本思想进行调整,以完成日期没有记录的行 在报告设计中创建三个公式字段,即第一个日期,中间日期,最后一个日期,并在公式编辑器中设置其值,如下所示:
我所做的是,我创建了一个带有日期的表,当用户通过日期时间选择器选择一个月时,我的程序会将所选月份的所有日期插入到表中。尽管也可以在SQL级别尝试(如@Azing所建议的),如果您只想在Crystal Report级别执行此操作,您可以根据以下基本思想进行调整,以完成日期没有记录的行 在报告设计中创建三个公式字段,即
第一个日期
,中间日期
,最后一个日期
,并在公式编辑器中设置其值,如下所示:
WhilePrintingRecords;
numberVar TotalDays := Day ({Sale_Date_Field}) - 1;
numberVar i;
stringVar DayList := "";
for i := 1 to TotalDays step 1 do
DayList := DayList & ToText(i, 0) & " 0.00 0.00" & Chr(13);
DayList;
WhilePrintingRecords;
numberVar FromDay := Day({Sale_Date_Field}) + 1;
numberVar To_Day := Day(Next({Sale_Date_Field})) - 1;
numberVar i;
stringVar DayList := "";
for i := FromDay to To_Day step 1 do
DayList := DayList & ToText(i, 0) & " 0.00 0.00" & Chr(13);
DayList;
WhilePrintingRecords;
numberVar NextDay := Day ({Sale_Date_Field}) + 1;
numberVar i;
numberVar MonthDays := 30;
if (Month ({Sale_Date_Field}) in [1,3,5,7,8,10,12]) then
MonthDays := 31
else if (Month ({Sale_Date_Field}) in [4,6,9,11]) then
MonthDays := 30
else if (Month ({Sale_Date_Field}) = 2
and Remainder(Year({Sale_Date_Field}), 4) = 0) then
MonthDays := 29
else
MonthDays := 28;
stringVar DayList := "";
for i := NextDay to MonthDays step 1 do
DayList := DayList & ToText(i, 0) & " 0.00 0.00" & Chr(13);
DayList;
报告标题部分中的第一个\u日期
Mid_日期
详情b部分Common
选项卡上的格式字段中启用可以增长选项。
在Section Expert中为细节b部分启用抑制空白部分
选项。
设置字段格式并相应地设置日期列表。
对于多个月,报告可以按月份分组,First_Dates
,Last_Dates
公式可以分别放在组的页眉和页脚中
此解决方案不适用于交叉表格式。那么您到底想要什么?在{April}的几天还是在??你能举个例子吗?看看这个…&这:谢谢你先生的回复…我想要先生是垂直打印一个月的天数(以数字形式)(来自参数字段)先生…谢谢你的链接先生,但这不是我想要的…我已经有一个公式来确定一个月有多少天…我想要先生是垂直打印它…仍然不清楚。请你更新你的问题,以了解你的期望。据我所知,您需要列中的天数,因此30行表示月份有30天,31行表示月份有31天。对吗?别叫我先生。。