簡體   English   中英

Crystal報表中的優雅字符串到日期(范圍)轉換

[英]Elegant String to Date (Range) Conversion in Crystal Reports

在我的數據庫中,我有一個類型為varchar(8)的日期字段,用於以YYYYMMDD格式存儲日期值。 我很難創建一個簡單的CR公式來以以下格式顯示日期范圍:

2012年10月1日至2012年10月31日

這是我當前且非常沒有吸引力的CR公式:

stringvar yYear;
stringvar mMonth;
datevar OrigDate;
numbervar StartDay;
stringvar EndDay;

yYear := Mid ({Command.Date}, 1, 4);

select Mid ({Command.Date}, 5, 2)
case "01": mMonth:= "January"
case "02": mMonth:= "Februry"
case "03": mMonth:= "March"
case "04": mMonth:= "April"
case "05": mMonth:= "May"
case "06": mMonth:= "June"
case "07": mMonth:= "July"
case "08": mMonth:= "August"
case "09": mMonth:= "September"
case "10": mMonth:= "October"
case "11": mMonth:= "November"
case "12": mMonth:= "December";

OrigDate := CDate(ToNumber({Command.Date}[1 to 4]), ToNumber({Command.Date}[5 to 6]), ToNumber({Command.Date}[7 to 8]));
StartDay := ToNumber({Command.Date}[7 to 8]);
EndDay := Mid(ToText(DateSerial(Year(OrigDate), Month(OrigDate) +1, 1-1)), 4, 2);

mMonth + " " + ToText(StartDay, "#") + ", " + yYear + " to " + mMonth + " " + EndDay + ", " + yYear

這樣做是可行的,但是本着可維護性和良好/簡潔的編碼慣例的精神,如果可能的話,我想簡化此功能。

我對用Crystal編寫報告還比較陌生,所以我希望自己還沒有“重新發明輪子”。

嘗試這個:

local numbervar year := tonumber(left({Command.Date},4));
local numbervar month:= tonumber(mid({Command.Date},5,2));
local numbervar day := tonumber(right({Command.Date},2));
local datevar stDate := date(year,month,day);
local datevar endDate := dateserial(year,month+1,day-1); //get last day of month

totext(stDate,"MMMM d, yyyy") + " to " + totext(endDate,"MMMM d, yyyy")

DRYer解決方案?

創建一個自定義函數:

// YYYYMMDD()
// Convert a value in 'YYYYMMDD' to a Date
Function (Stringvar value)

    Date( ToNumber(value[1 to 4]), ToNumber(value[5 to 6]), ToNumber(value[7 to 8]) )

創建開始日期的公式:

//{@Starting Date}
YYYYMMDD( {Command.Date} )

創建結束日期的公式:

//{@Ending Date}
// find first day of current month, add a month, subtract a day, truncate time
Date( DateAdd("m", 1, Date( Year({@Starting Date}), Month({@Starting Date}), 1) ) - 1 )

將兩個公式字段都嵌入一個文本字段中,並根據需要設置每個字段的格式(提高靈活性)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM