台灣最大程式設計社群網站
線上人數
1249
 
會員總數:243311
討論主題:188091
歡迎您免費加入會員
討論區列表 >> VB.NET >> MySQL的 空白值跟Null處理
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
MySQL的 空白值跟Null處理
價值 : 50 QP  點閱數:378 回應數:10

樓主

培根
門外漢
0 35
673 113
發送站內信

各位高手們好!
我目前在做日期檢查,基於一些原因我的資料庫有些欄位是空白值有些是Null
我的程式碼為

基本上都重複的,所以我結取一段
我已經確定是 if 判斷式的問題
我試了好久,它都會說 無法處理Null 資料的問題出現
請問我要怎麼更改我的判斷式??

搜尋相關Tags的文章: [ VB.NET MySQL的 空白值跟Null處理 ] ,
本篇文章發表於2018-04-24 16:58
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
不錯的參考

P陳
檢舉此回應
試試這個吧!!
If IsDate(myReader.GetString("日期")) = True then
if 5 = DateDiff(DateInterval.Day, CDate(date()), CDate(myReader.GetString("日期"))) Then
MsgBox("還有5天過期")
end if
end if
本篇文章回覆於2018-04-24 20:18
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

培根
檢舉此回應
謝謝陳P的回答
但是它一樣會說 資料為Null 的錯誤出現
本篇文章回覆於2018-04-25 08:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

培根
檢舉此回應
myReader.GetString("日期") Is Nothing
IsDate(myReader.GetString("日期")) = True
IsDBNull(myReader.GetString("日期")) = True

以上都不能 我還在找方法.....
本篇文章回覆於2018-04-25 09:05
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

培根
檢舉此回應
我研究出來的結果:
如果我把他判定的結果變成字串
If IsDate(myReader.GetString("線材預定交期")).ToString() = True Then
那我所執行的結果是成功的

不知道大大們還有沒有其他建議??
本篇文章回覆於2018-04-25 09:44
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
不錯的參考

小羊窒息
捐贈 VP 給 小羊窒息 檢舉此回應
如果重點是要判斷null的話,這2篇大概是你需要的吧...

-----
https://stackoverflow.com/questions/4739641/how-to-check-for-null-in-mysqldatareader-by-the-columns-name
欄位名稱轉換成欄位順序(如果你只抓1個欄位, 就不需要GetOrdinal, 直接看下一個網址即可)

-----
https://stackoverflow.com/questions/16167056/vb-net-read-null-value-from-database

直接寫 If myReader.IsDBNull(0) Then

=======================

如果只是要判定是不是日期,你自己在4樓貼的方式就可以解決了...

但如果你在4樓寫的方式沒問題的話,

那你一開始的這一行不太可能發生錯誤的
If IsDate(myReader.GetString("日期").ToString()) = True AndAlso 5 = DateDiff(DateInterval.Day, CDate(Time), CDate(myReader.GetString("日期"))) Then

因為IsDate(myReader.GetString("日期").ToString())不成立,所以AndAlso後面的部份並不會被執行,(如果你是寫 and 的話,會出錯是應該的,但你寫的是andalso)

而CDate(myReader.GetString("日期")) 這一行沒有被執行的話,要如何發生 null無法換成日期的問題呢...


-----


本篇文章回覆於2018-04-25 12:00
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

小魚
檢舉此回應
在C# 我都會判斷



VB請自己轉換吧...
從你PO出來的部份,
問題應該出在 myReader.GetString("日期") 是 null
所以不能使用ToString方法,
會回傳錯誤,
如果照你寫的方式,
應該判斷 myReader.GetString("日期") != null 就可以了
本篇文章回覆於2018-04-25 12:53
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

培根
檢舉此回應
我也是覺得滿奇怪的
如果在VB上執行的話都沒有問題
可是會出exe檔,就會有問題跑出來
本篇文章回覆於2018-04-25 14:20
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

培根
檢舉此回應
我目前算是 快瘋掉的情況
我已經搞不清楚到底是 我程式的問題 台式mySQL的問題了QAQ
本篇文章回覆於2018-04-25 16:51
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
作者回應

培根
檢舉此回應
我有式過 小羊窒息 的程式碼 If myReader.IsDBNull(0) Then
它說 "日期" 至類型Integer轉換是無效的

小魚的可以
If DBNull.Value.Equals(myReader("線材預定交期")) <> True Then

謝謝您們:) 我會再試試看
有問題我會再提問 感恩:)
本篇文章回覆於2018-04-25 17:02
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
最有價值解答

小魚
檢舉此回應
之前處理很多次Null的問題,
不過如果是自己建的資料庫,
基本上我會設成 Not Null並且給預設值,
就不需要去處理Null的問題了.
本篇文章回覆於2018-04-26 12:28
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.