2010-10-06 68 views
1

我想要的AS/400文件的內容拉回到一個數據綁定的.NET的WinForms DataGridView中(VS 2010)。查詢本身沒有問題,我可以使用網格的DataSource屬性來綁定所有內容。數據返回沒有問題。綁定DB2(i系列)日期/時間/ TIMESTAMP列一個WinForms DataGridView的

問題我am有所有日期/時間字段回來作爲字符串文字,使其無法排序。此外,它使用我們的默認AS/400格式(yyyy-dd-mm和hh.mm.ss)。我希望他們回來作爲實際的日期/時間字段,以便他們可以排序,我可以控制輸出格式(我更喜歡MM/dd/yyyy和hh:mm:ss AMPM)。我嘗試使用TIMESTAMP格式將兩個字段組合成一個字段,但這只是給了我一個組合字符串。

我想盡可能避免做任何字段按摩,我想保留表格數據綁定以便於編碼,但如果我必須關閉列自動生成,我會這樣做。我也想避免做任何中間LINQ查詢,因爲我失去了按列開箱排序的能力(以及我在網上看到的添加回去的例子都是漫長而痛苦的)。

任何人都可以提出什麼嗎?謝謝!

編輯:代碼示例。 SQL查詢值(其名稱更改爲保護無辜者)是:

SELECT MYDATE, MYTIME, TIMESTAMP(MYDATE, MYTIME) 
FROM LIBNAME.FILENAME 
WHERE <blah blah blah> 

SQL查詢獲取通過OleDbDataAdapter.Fill命令寫入到一個DataTable。

Dim myTable as New DataTable 
Using adapter As New OleDbDataAdapter 
    adapter.SelectCommand = New OleDbCommand(<sql statement>, <AS/400 Connection>) 
    adapter.Fill(myTable) 
    Return myTable 
End Using 

DataTable中被塞進一個DataGridView:

grid.DataSource = FunctionCallToGrabTheDataAbove 

非常簡單(並試圖保持這種方式如果可能的話),我認爲你將不得不推出一列

+0

你能提供的,你是如何做一些代碼?這將有助於回答這個問題。 – 2010-10-06 16:30:26

+0

好點。編輯包含一些基本代碼。 – 2010-10-06 18:35:49

回答

1

的事情是,AS/400日期時間字段基本上字符串文字。至少,這是他們在檢查AS/400上的物理文件時的樣子。只要它們採用通常的時間戳順序,即YYYY.MM.DD.hh.mm.ss,它們就可以排序和相互比較(相互之間)。

如果沒有滿足您的需求,您將有按摩領域或者做其他的中間步驟自己。

+0

這就是我最終做的。我從最後修剪了毫秒,並稱它爲好。這不是一個將會被使用的領域,所以做所有的手動工作,以便將它作爲一個.NET日期進行排序和格式化是不值得的。謝謝! – 2010-10-08 13:34:28

1

DataGridView可以解釋爲日期而不是字符串。如果您無法使用DB2 SQL執行此操作,則可以在數據表中添加新的日期列。

+0

是的,你可能是對的。 DataBound控件非常棒,讓生活變得更輕鬆,但是當你進入AS/400的神祕世界時,它們會發生故障。謝謝! – 2010-10-08 13:33:23

2

嘗試以下操作:

SELECT MYDATE, 
     MYTIME, 
     TIMESTAMP(CHAR(MYDATE,ISO)||'-'||CHAR(MYTIME,ISO)) 
FROM LIBNAME.FILENAME 
WHERE <blah blah blah> 
相關問題