2012年12月24日 星期一

[除錯] 字串未被辨認為有效的 DateTime

說明:
當資料欄位型態為 DateTime ,而資料欄卻沒有資料 DBNull
取出資料存在陣列,其在陣列的值依然為 DBNull 而非 Empty
當DataBindSource某欄位其資料型態為DateTime
並且要將陣列 "日期資料 DBNull / Empty" 配置過去時
便會發生 Error Msg : 字串未被辨認為有效的 DateTime

解決方式:
塞入"無意義的"日期字串, 但未來要使用時必須判別說 "1900/1/1" 便是...
不一定是最好方法,評估一下便可適用專案解法...

                    If i = 58 OrElse i = 63 OrElse i = 66 Then
                        MsgBox(bs.Item(bs.Position)(i).ToString)
                        'MsgBox(bs.Item(bs.Position)(i).GetType.ToString)
                        'bs.Item(bs.Position)(i) = CDate(bsReset(i).ToString).Date
                        If bs.Item(bs.Position)(i).GetType.ToString = "System.DBNull" Then
                            'MsgBox("A")
                            bs.Item(bs.Position)(i) = "1900/01/01" '暫時的解法
                        Else
                            '
                            bs.Item(bs.Position)(i) = bsReset(i).ToString
                        End If
                        MsgBox(bs.Item(bs.Position)(i).ToString)
                    Else
                        bs.Item(bs.Position)(i) = bsReset(i).ToString
                    End If

正解:
控制項.DataBindings.Add 當繫結格式為 DateTime 時,可以輸入空白!

參考:
[SQLite]字串未被辨認為有效的 DateTime?
字串未被辨認為有效的DateTime
DateTime的的問題:字串為辯認為有效的DateTime。
字串轉DateTime的問題

[C#]
((DataRowView)bs_印字[bs_印字.Position])["MARK1"]

其它(日期)參考:
時間格式及方法運用
標準日期和時間格式字串
DateTime.GetDateTimeFormats 方法
DateTimeFormatInfo 類別
用DateTimeFormatInfo格式化日期时间(C#)
AM and PM with "Convert.ToDateTime(string)"
how get a.m. p.m. from DateTime?
自訂日期和時間格式字串
datetime.now first and last minutes of the day
SQL时间类型(DateTime)模糊查询及Between
善用 SQL Server 中的 CONVERT 函數處理日期字串
[SQL]使用BETWEEN要注意的地方
[筆記] SQL - between

沒有留言:

張貼留言