1. 程式人生 > >機房收費系統之收取金額查詢(TPicker控制元件時間段取值、SQL語句中單引號與雙引號區別)

機房收費系統之收取金額查詢(TPicker控制元件時間段取值、SQL語句中單引號與雙引號區別)

        收取金額查詢窗體較組合查詢而言就是小菜一碟,但即便是內容較少也有其精華之處,現在分享一下我的學習過程吧^_^

一、收取金額查詢窗體的流程圖:

二、問題集

這是什麼錯誤呢,為什麼會出現這個型別的錯誤?

產生此問題的程式碼部分是什麼樣子的呢?

以下為問題程式碼:

    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

      機房的窗體已經敲完一半,明顯感覺現在對程式碼的親切度比以前要深入了很多,敲程式碼的速度也有所見長,這也是日積月累的過程吧,雖然現在每天只有一個小時的時間在做機房,但只要不斷就是好的,下一站走起^_^