2016-04-01 130 views
0

我試圖將空值存儲到日期數據類型變量。該值來自我的DataSet,但我得到了錯誤指定的轉換無效。這是我的代碼:指定的演員日期無效

Dim varTimeOut As Nullable(Of DateTime) = DSMemberAttendance.Tables("tblMemberAttendance").Rows(iCounter)("TimeOut") 

有沒有辦法將空值存儲到我的日期變量?我正在使用Visual Basic 2005.預先感謝。

enter image description here

enter image description here

+0

我只有VS 2015年,但嘗試,如果它在2005年的作品太: '昏暗O作爲對象= DSMemberAttendance.Tables( 「tblMemberAttendance」)行(iCounter)( 「超時」) 昏暗varTimeOut可爲空(中日期時間)= If(o IsNot Nothing,DirectCast(o,DateTime),Nothing)' –

+0

DSMemberAttendance.Tables(「tblMemberAttendance」)。行(iCounter)(「TimeOut」)的實際數據類型是什麼? –

+0

@AlexB。我試過了,但是在IF之後有一個錯誤提示「期望的結束」。 – aer

回答

1

數據庫的代碼不會在數據庫中的NULL值返回Nothing。它反而返回一個特定的類型(我記得DBNull)。您需要專門檢查數據庫空(在數據庫字段中可能存在IsNull屬性),並在此情況下適當地設置Nullable,如果數據庫值包含有效日期,則僅將數據庫值分配給Nullable。

2

在對於斯圖亞特回答下面的代碼段應該做的伎倆:

Dim varTimeOut As Nullable(Of DateTime) 
    If DSMemberAttendance.Tables("tblMemberAttendance").Rows(iCounter).IsNull("TimeOut") Then 
     varTimeOut = Nothing 
    Else 
     varTimeOut = DirectCast(DSMemberAttendance.Tables("tblMemberAttendance").Rows(iCounter)("TimeOut"), DateTime) 
    End If 

如果這是工作,請接受斯圖亞特王朝的答案,因爲他釘它,我不希望用借來的羽毛來裝飾自己。

+0

謝謝...我學到了另一種技巧。 – aer

+0

我試圖谷歌鑄造的概念...因爲從我的數據庫,TimeOut是日期/時間類型,我正在尋找一種方法來顯示在我的DataGridView中沒有日期varTimeOut的值,這種格式hh: mm:ss tt。你能提出任何方法來實現它嗎?我嘗試在MSAccess中更改字段格式的設置,但它對我也沒有幫助。真的非常感謝你的回答。 – aer

+1

轉到DataGridView屬性 - >列[...] - >選擇你的TimeOut列 - >打開DefaultCellStyle [...] - >格式[...] - >選擇你最喜歡的日期時間格式 –