2014-03-19 41 views
1

我有一個C#應用程序,每週從CSV平面文件插入數據到SharePoint列表中,其中有超過30000條記錄並且正在增長。使用[今日]和字符串字段篩選SharePoint 2007

管理層希望在視圖中只看到90天以下的項目,但日期字段作爲單行文本插入(否則根本不會上傳)。現在我已經嘗試使用= TEXT(DateField,「yyyymmdd」)創建一個新的計算列,並將該字段設置爲DateTime類型。然後我嘗試使用「NewColumn大於[今天] -90」在視圖中對該新列進行過濾,但返回零結果。

有沒有辦法將我的文本字段轉換爲日期字段,可以用來像這樣過濾,也可以將平面文件字符串轉換爲日期時間值,然後我甚至上傳到SharePoint?

+0

什麼您_'otherwise它不會在all'_上傳的意思是轉換成正確的格式? – banana

+0

當我將列表中的字段類型設置爲日期和時間時,即使我嘗試從C#中插入DateTime對象,上傳函數也會返回無效的格式錯誤。 我聽說過可能用於避免此問題的函數,但它們需要開發環境與SharePoint站點位於同一服務器上才能引用該DLL,這在我的情況中不可行。 –

回答

0

我最終找到了答案。

SharePoint不會讓我過濾以這種方式轉換的字段,所以我必須以正確的格式上傳數據。 CSV提要給了我一個「yyyyMMdd」格式的字符串,但是SharePoint需要在格式塊之間使用連字符,如:「yyyy-MM-dd」。 批處理元素中的FieldRef節點也需要像這樣:

"<Field Name='Date_x0020_Field' Type='DateTime' Format='DateOnly'>" + date + "</Field>" 

我最終轉換爲DateTime對象,然後返回字符串,因爲我是datetime格式已經整合了一些其他數據,但您可以輕鬆地手動插入連字符。

您可以將字符串轉換日期時間與Convert.ToDateTime(stringDate);,你可以從使用dateTimeObject.ToString("yyyy-MM-dd");