台灣最大程式設計社群網站
線上人數
1585
 
會員總數:245799
討論主題:189428
歡迎您免費加入會員
討論區列表 >> VB.NET >> OleDb從EXCEL讀取資料where條件日期比對問題
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
OleDb從EXCEL讀取資料where條件日期比對問題
價值 : 100 QP  點閱數:190 回應數:11
樓主

瑪格麗特
初學者
100 15
474 39
發送站內信



用OleDb從EXCEL讀取資料,EXCEL日期時間欄位range.NumberFormat = "yyyy/m/d hh:mm:ss", SDate=109/03/25,EDate=109/03/26


strSQLCommand = "select " & strEXCELField & " from [" & strSheetName & "$"> where (日期時間 between #" + SDate + "# and #" + EDate + "#" & ") order by 日期時間 desc"


DtSet = New System.Data.DataSet
MyCommand.Fill(DtSet)之後,DtSet.Tables(0).Rows.Count = 0
沒有取出任何資料,請問where的日期區間條件要如何修改才可以讀取到符合日期區間條件的資料呢?謝謝!





搜尋相關Tags的文章: [ OleDb從EXCEL讀取資料 ] ,
本篇文章發表於2020-03-27 19:04
1樓
回應

HB
檢舉此回應
修改如下,試試是否可行?

SDate=2020/03/25,EDate=2020/03/26
strSQLCommand = "select * from [" & strSheetName & "$] where 日期時間 between #" + SDate + "# and #" + EDate + "# order by 日期時間 desc"
本篇文章回覆於2020-03-28 14:04
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

瑪格麗特
檢舉此回應
如果沒有WHERE條件可以取出全部的資料,不是select " & strEXCELField & " 或是select *的問題
本篇文章回覆於2020-03-28 14:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

HB
檢舉此回應
欄位設成 * 或 strEXCELField 是沒差,測試時沒有刻意寫出欄位名稱而已。

主要是日期改為西元年。
本篇文章回覆於2020-03-28 15:56
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

roar
檢舉此回應
"$">這有點怪,試試下面的st1~st5全部都是string
strSQLCommand = "select " & st1 & " from [" & st2 & "$] where (" & st3 & " between #" & st4 & "# and #" & st5 & "#) order by " & st3 & " desc"
本篇文章回覆於2020-03-28 17:24
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

瑪格麗特
檢舉此回應
日期改成西元年沒有用呢!有將SDate、EDate型態改成Date試過了
本篇文章回覆於2020-03-28 18:26
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
最有價值解答

HB
檢舉此回應
提供測試的資料、語法供參考!是可以跑出2筆


本篇文章回覆於2020-03-28 19:23
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

HB
檢舉此回應
剛剛突然想到,可能是變數需轉換成日期

將SDate改為Date.Parse(SDate) ,EDate 改為Date.Parse(EDate)
本篇文章回覆於2020-03-28 19:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
回應

HB
檢舉此回應
或者將SDate, EDate日期格式化如下:
strSQLCommand = "select * from [" & strSheetName & "$] where 日期時間 between #" + Format(SDate, "yyyy/MM/dd") + "# and #" + Format(EDate, "yyyy/MM/dd") + "# order by 日期時間 desc"
本篇文章回覆於2020-03-28 19:42
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

誰是誰
檢舉此回應
為何不用參數式查詢,要這樣硬拚 SQL 語句呢 ?
本篇文章回覆於2020-03-28 23:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

瑪格麗特
檢舉此回應
謝謝HB的回覆,明天上班再試試看
本篇文章回覆於2020-03-29 15:35
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
作者回應

瑪格麗特
檢舉此回應
原本程式SDate、EDate = CDate(DateTimePicker1.Value.ToString("yyyy/MM/dd"),SDate=109/3/25,EDate=109/03/26
將SDate、EDate改成 SDate = DateAdd(DateInterval.Year, 1911, CDate(DateTimePicker1.Value.ToString("yyyy/MM/dd"))) 就可以了
本篇文章回覆於2020-03-30 12:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

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