機房收費系統之收取金額查詢(TPicker控制元件時間段取值、SQL語句中單引號與雙引號區別)
阿新 • • 發佈:2018-12-14
收取金額查詢窗體較組合查詢而言就是小菜一碟,但即便是內容較少也有其精華之處,現在分享一下我的學習過程吧^_^
一、收取金額查詢窗體的流程圖:
二、問題集
這是什麼錯誤呢,為什麼會出現這個型別的錯誤?
產生此問題的程式碼部分是什麼樣子的呢?
以下為問題程式碼:
txtSQL = "select * from Recharge_Info where date > " & begindate.Value & " and date< " & enddate.Value & "" Set mrc = ExecuteSQL(txtSQL, MsgText)
你能看出問題出在哪裡麼?
正確程式碼如下:
txtSQL = "select * from Recharge_Info where date > '" & begindate.Value & "' and date< '" & enddate.Value & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText)
看出他們的區別了麼?
提示一下問題出在符號上面哦^_^
是的,問題就出在了單引號上面,那麼SQL中單引號與雙引號的區別是什麼呢?
①雙引號裡面的欄位會經過編譯器解釋然後再當作程式碼輸出,而單引號裡面的不需要解釋,直接輸出。
②SQL裡字元型只能用單引號,雙引號是引用的連結資料庫的程式裡的,如果要用雙引號,在SQL裡要加個單引號。
三、程式碼集
Private Sub cmdquery_Click() Dim mrc As ADODB.Recordset Dim txtSQL As String Dim MsgText As String '查詢選定範圍裡的資料 txtSQL = "select * from Recharge_Info where date > '" & begindate.Value & "' and date< '" & enddate.Value & "'" Set mrc = ExecuteSQL(txtSQL, MsgText) If mrc.EOF Then '無資料時提示 MsgBox "該時間段無資料", vbOKOnly, "溫馨提示:" Exit Sub End If With myflexgrid '有資料逐個載入 .Rows = 1 .CellAlignment = 4 .TextMatrix(0, 0) = "卡號" .TextMatrix(0, 1) = "充值金額" .TextMatrix(0, 2) = "充值日期" .TextMatrix(0, 3) = "充值時間" .TextMatrix(0, 4) = "充值操作員" .TextMatrix(0, 5) = "結賬狀態" Do While Not mrc.EOF '迴圈載入 .Rows = .Rows + 1 .CellAlignment = 4 .TextMatrix(.Rows - 1, 0) = Trim(mrc.Fields(2)) .TextMatrix(.Rows - 1, 1) = Trim(mrc.Fields(3)) .TextMatrix(.Rows - 1, 2) = Trim(mrc.Fields(4)) .TextMatrix(.Rows - 1, 3) = Trim(mrc.Fields(5)) .TextMatrix(.Rows - 1, 4) = Trim(mrc.Fields(6)) .TextMatrix(.Rows - 1, 5) = Trim(mrc.Fields(7)) mrc.MoveNext Loop End With End Sub