水晶報表小技巧 使用 3 自定日期時間格式輸出

2021-08-20 14:41:32 字數 3248 閱讀 6422

新建乙個公式字段:

if (time() = time(23,59,00)) then

totext(,"dd/mm/yyyy")

else

totext(,"dd/mm/yyyy hh:mm tt", "am", "pm")

totext(year(cdate()),'####')+ ' 年' +totext(month(cdate()),'##')+ ' 月' +totext(day(cdate()),'##')+ ' 日'  ;

設定物件格式-->顯示字串-->公式-->:totext(cdate(),"yyyy-mm-dd");

水晶報表日期格式轉化

第一種  日期格式: 

local datetimevar tdate; 

tdate := ;

totext(year(tdate),'####')+ '-' +totext(month(tdate),'##')+ '-' +totext(day(tdate),'##') ;

第二種  日期格式:

datetimevar pdate;

pdate := ;

totext(pdate, "yyyy/mm/dd");

一般我們可以使用公式來實現一些特殊的功能,但是對於一些需要重複處理的情況

可以使用自定義函式來實現

報表自定義函式和儲備庫自定義函式

報表自定義函式只存在於單一報表模板內,不同模板間不可以共用。

儲備庫自定義函式對於單獨的水晶報表和.net自帶的版本是不可用的,這是水晶報表伺服器版本或boe的乙個功能

將函式轉換為儲備庫自定義函式後,該函式將儲存到系統資料庫,從而不同報表可以進行函式共用。

不過對於單一函式功能來說並沒有什麼影響。

現在我結合乙個例項,說一下自定義函式的使用。

有乙個命題是這樣的,將乙個日期型的字段【2008-10-28】,顯示為【二零零八年十月二十八日】

使用自定義日期格式是達不到這種效果的,雖然我們可以通過公式來實現,但是對於多個這種的字段,每次都寫公式還是很麻煩的。

所以這裡選擇用自定義函式實現。

切換到公式編輯器介面,在【報表自定義函式】上點右鍵,新建乙個函式,名稱為mydate。

將語法切換為basic(當然你也可以用crystal語法),然後編寫函式體

具體的函式內容我就不做說明了,這裡我用了兩個函式來是實現此功能。

另乙個函式是chnumber,用來處理mydate中的復用。

函式體如下

'進行日期轉換

function

mydate (date1 

asdate

)dim

sy as

string

dimsm 

asstring

dimsd 

asstring

'分別取出年月日   sy=

totext(

year

(date1),0)

sm=totext(

month

(date1),0)

sd=totext(

day(date1),0)

mydate 

=chnumber(sy,"0

") &"

年"&chnumber(sm,"1

") &"

月"&chnumber(sd,"1

") &"

日"end function

's待處理的引數,t引數型別。0為年份,逐個字元替換,1為月份和日期,10進製

function

chnumber ( s 

asstring

, t 

asstring

)dim

s0 as

string

'先全部替換s0=

replace

(s,","

,"")s0

=replace

(s0,"0

","零

")s0=

replace

(s0,"1

","一

")s0=

replace

(s0,"2

","二

")s0=

replace

(s0,"3

","三

")s0=

replace

(s0,"4

","四

")s0=

replace

(s0,"5

","五

")s0=

replace

(s0,"6

","六

")s0=

replace

(s0,"7

","七

")s0=

replace

(s0,"8

","八

")s0=

replace

(s0,"9

","九

")'進行月日的十進位處理ift

="1"

then

'十進位處理,在兩個數字中間加入乙個「十」字

iflen

(s0)=2

thens0=

left

(s0,1) 

&"十"

&right

(s0,1)

'處理剛好為10、20、30的情況

ifleft

(s0,1)

="一"

thens0=

replace

(s0,"一十

","十

")ifright

(s0,1)

="零"

thens0=

replace

(s0,"零

","")

endif

endif

chnumber =s0

end function

然後我們來做個簡單的測試:

新建立乙個日期型的引數xx,

然後做乙個公式yy,公式內容為:mydate()

顯示為:二零零八年十月二十八日

水晶報表基礎入門 3 水晶報表外觀設計技術

6.1.2水晶報表外觀設計技術 crystal reports提供了非常靈活的機制來自定義報表中物件的外觀,比如資料庫字段 文字物件公式。通過使用為這些物件準備的各種格式選項,開發人員可以改變報表的外觀的各個方面,比如字型 大小 顏色 對齊方式及其他。crystal reports提供 格式化編輯器...

水晶報表小例用於學習

首先這不是一編很高深的文章,意義在於學習。crystal reports 自 1993 年開始就已經是 visual studio 的一部分,並且現在已經成為了 visual studio 2005 中的標準報表建立工具。每套 visual studio 2005 都附帶了該工具,並且它直接整合到開...

水晶報表之自定義函式

在水晶報表中可以自定義函式,它語法規則有兩種 一種是basic語法 一種是水晶報表自帶的語法 crystal語法 這兩種語法我都不熟,但專案過程需要用到自定義函式來處理,如處理日期型別資料等。就從網上找了一些示例。水晶報表的自定義函式的定義在公式欄位中,通過右擊 公式字段 新增乙個公式字段,出現乙個...