2012-10-30 3 views
1

내 데이터베이스에 날짜 형식을 YYYYMMDD 형식으로 저장하는 데 사용하는 varchar (8) 유형의 날짜 필드가 있습니다.Crystal Reports의 우아한 문자열 (날짜) (범위) 변환

:

2012 여기 내 현재와 매우 매력 CR의 공식은 10 월 31

2012년 10월 1일 : 나는 다음과 같은 형식으로 날짜 범위를 표시하는 간단한 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에서 보고서를 작성하는 데 비교적 익숙하므로 "휠을 다시 발명하지 않았습니다"라고 기대하고 있습니다.

답변

0

이 시도 :

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") 
+0

감사합니다. Ryan. 나는 더 간단한 해결책이 있어야한다는 것을 알았다. 과잉 사고의 위험 ... – 8thWonder

0

건조기 솔루션을?

//{@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) 

삽입 모두 수식 필드 :

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

가 종료 날짜에 대한 수식을 만듭니다

// 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])) 

가 시작 날짜 수식을 만듭니다

사용자 정의 함수를 만듭니다 텍스트 필드에서 원하는대로 각 필드의 서식을 지정합니다 (유연성 향상).