在應用中,有時候會要求按照日期來排列數據,并且還會需要簡單的按日期來檢索數據,比如在頁面上加入一個跳轉菜單,包含數據的日期列表,然后選擇日期后傳遞日期參數跳轉。這種做法在沒有日期的時候應該顯示哪一天的數據呢? 通常會用“DATE()”作為沒有參數情況下的選擇,就是顯示當天的數據,但如果當天沒有數據呢? “DATE()-1”?似乎不能解決問題。 先看看Dreamweaver MX 自動生成記錄集的SQL代碼: SCSJ.Source = "SELECT * FROM dbo.MCIS_生產數據 WHERE 日期 = '" + Replace(SCSJ__MMColParam, "'", "''") + "' ORDER BY 日期 DESC" 在日期字段的過濾上使用了“=”,大家都知道如果是文本類型的話可以使用“LIKE”操作符配合“%”來獲得所有記錄,如果可以做到,那么在沒有日期參數傳遞的情況下就顯示所有的記錄倒是不錯的選擇。 這里的實現方法就是修改Dreamweaver MX 自動生成的記錄集代碼,加入判斷,當URL參數不存在的時候,記錄集SQL過濾使用“LIKE”操作符獲得所有記錄,否則使用“=”操作符獲得屬于參數日期的記錄。 下面是代碼,應該很好理解的。 <% Dim SCSJ__MMColParam SCSJ__MMColParam = "%" If (Request.QueryString("MCISDATE") <> "") Then SCSJ__MMColParam = Request.QueryString("MCISDATE") End If %> <% Dim SCSJ Dim SCSJ_numRows Set SCSJ = Server.CreateObject("ADODB.Recordset") SCSJ.ActiveConnection = MM_jbcjsql_STRING If (Request.QueryString("MCISDATE") <> "") Then SCSJ.Source = "SELECT * FROM dbo.MCIS_生產數據 WHERE 日期 = '" + Replace(SCSJ__MMColParam, "'", "''") + "' ORDER BY 日期 DESC" ELSE SCSJ.Source = "SELECT * FROM dbo.MCIS_生產數據 WHERE 日期 LIKE '" + Replace(SCSJ__MMColParam, "'", "''") + "' ORDER BY 日期 DESC" END IF SCSJ.CursorType = 0 SCSJ.CursorLocation = 2 SCSJ.LockType = 1 SCSJ.Open() SCSJ_numRows = 0 %>
|