2014-09-19 110 views
0

我一直在線查找公式以將顯示爲日期的文本字段轉換爲真實日期或數字字段。該字段的值介於2014年9月19日,9月9日和9月19日之間。我很遺憾沒有直接訪問這些值所在的數據庫,因爲我只是在那裏格式化它們。將日期文本字段設置爲數字日期字段

我需要轉換此字段的原因是因爲我必須編寫一個水晶報表,它可以使用數據範圍參數中該字段中的值。有沒有辦法使用公式來轉換這些不一致的值?我嘗試使用各種ToNumber公式進行轉換,但我認爲它會遇到麻煩,因爲該字段在輸入文本方式時不一致。

謝謝

爲了增加註釋下這是我迄今所做的。

首先,我使用Replace({V_GUIDESHEET.ITEM_COMMENT},"/","")創建了一個從字段中刪除斜槓的公式。然後我創建了另一個公式,將該字段轉換爲數字Right("0"&{@ReplaceSlash},8)。所以現在我剩下的公式字段是一個數字字段,其值與05272016或0692016類似,我希望其行爲類似05/27/2016或06/9/2016,但關鍵是我需要這個新的公式字段來思考並像日期字段一樣操作,以便我可以創建日期範圍參數。用戶打開報告時需要鍵入日期範圍以顯示在特定範圍內過期的許可證。

我也曾嘗試

Mid (ToText ({@ExpirationNumber}, "#", 0), 5,2) 
+ "/" + Right (ToText({@ExpirationNumber}, "#", 0),2) 
+ "/" + Left (ToText ({@ExpirationNumber}, "#", 0), 4) 

其返回值01/16/5272爲價值5272016.

+0

請發佈您到目前爲止嘗試過的代碼。 – Ryan 2014-09-19 20:23:36

+0

嗨瑞安我添加了我採取的步驟上面的原始帖子。 – tcoady 2014-09-19 21:01:57

回答

0

壞消息是,除了採摘的日期字符串的碎片和創建一個實際在他們的日期並不完全微不足道。您首先必須將字符串拆分爲繞「/」字符旋轉的三個新字符串,將每個字符串轉換爲數字,然後將每個字符串作爲單獨參數傳遞給Date()函數。

好消息是,CR已經爲您處理這個問題,Date()函數被重載到接受單個字符串參數。它接受一個不同長度的日期字符串,只要它格式正確並且與當地的日期格式相匹配,out將會彈出日期時間值。所以Date("1/17/14")將工作以及Date("01/17/2014")

解決此類問題的第一步是檢查文檔並確保您瞭解可以使用哪些功能以及它們的功能。例如,Right()函數不會將字符串轉換爲您所說的數字,如果您嘗試使用該方法繼續前進,可能會導致更令人頭痛的問題。

+0

非常感謝,感謝您的幫助。 – tcoady 2014-09-22 13:12:27