iT邦幫忙

0

C# 取得Access資料,排序日期

Ray 2020-08-20 10:40:221087 瀏覽

小弟近期在做有關C#(wpf)連接access資料庫的練習,有個問題爬文許久仍未解決,希望各位大大幫忙

問題:
想透過DatePicker選取日期區間,並返回相應的結果,但得到的資料、日期有誤,且排序也不正確

access資料庫部分:
https://ithelp.ithome.com.tw/upload/images/20200820/20129652WgPTuWSU9J.png

程式碼部分:
https://ithelp.ithome.com.tw/upload/images/20200820/201296520rPnMcUYMb.png

執行結果:(查詢8/1~8/20區間資料)
https://ithelp.ithome.com.tw/upload/images/20200820/20129652Y6E7CyIu8G.png

執行結果2:(查詢8/1~8/3區間資料)
https://ithelp.ithome.com.tw/upload/images/20200820/2012965282jFyzNVn2.png

EricLinTW iT邦新手 5 級 ‧ 2020-08-21 08:09:11 檢舉
雖然因為是練習所以沒差不過還是提醒一下, SQL String 用這樣的方式產生是很危險的,建議可以可使用 String Builder + Dapper 的方式來完成。
如果不一定要用自己寫 SQL string 的話則是可以考慮用 linq + Lambda ,交給C# 自行幫你編寫 SQL String。

1 個回答

2
海綿寶寶
iT邦大神 1 級 ‧ 2020-08-20 11:00:53
最佳解答

看起來你的日期欄位是用 short date format
請改成自訂格式 yyyy/mm/dd 再試試看
修改方法參考這裡

另外提醒一點
如果你以後還要問問題的話
程式碼不要用貼圖的
</>按鈕(在你上傳圖片按鈕的左邊兩個按鈕)把程式碼「包起來」
會比較有人有意願看你的程式碼

Ray iT邦新手 5 級 ‧ 2020-08-20 12:01:41 檢舉

感謝前輩解答!

剛試著將日期欄位改為日期/時間,查詢結果就正常了。
另想請問為何Access中欄位是依照(yyyy/mm/dd)的格式顯示,但DataGrid卻是以下圖格式顯示?
https://ithelp.ithome.com.tw/upload/images/20200820/20129652vRh3bnLT6j.png

看輸入是否也用了ToShortDateString()
是的話把ToShortDateString()餵估狗唄
不是的話當我瞎猜/images/emoticon/emoticon06.gif

Ray iT邦新手 5 級 ‧ 2020-08-20 14:21:19 檢舉

謝謝a大的回答

後來發現應是DataGrid本身欄位格式的設定問題,加入下方程式就正常了

DataGridTextColumn dg = dg_lend.Columns[3] as DataGridTextColumn;
dg.Binding.StringFormat = "yyyy/MM/dd";

我要發表回答

立即登入回答