2012-11-28 158 views
0

如果我删除LIMIT "&PageStart&" , "&PageEnd&",则以下查询正常工作。我从数据库中获取所有数据。但它不适用于LIMIT和这两个参数。我究竟做错了什么?SELECT未按预期工作

Dim Conn,strSQL,objRec 
Set Conn = Server.Createobject("ADODB.Connection") 
Conn.Open "Driver={SQL Server}; Server=Localhost; Database=book-it-fifa;" 
strSQL = "select distinct buchung_id, von, bis, abteilung, veranstalter, THEMA, THEMA_ENABLED " & _ 
    " from RESERVIERUNGRAUM r " & _ 
    "  ,BUCHUNG b " & _ 
    " where r.BUCHUNG_ID = b.ID " & _ 
    " and von >= convert(date, getdate(), 4) " & _ 
    " and von < convert(date, dateadd(day,1, GETDATE()), 4) " & _ 
    " and BIS >= getdate() " & _ 
    " and STORNO is null " 
Set objRec = Server.CreateObject("ADODB.Recordset") 
objRec.Open strSQL, Conn, 1,3 

If objRec.EOF Then 
    Response.write (" Not found record.") 
Else 

'**** Paging/Pagination Calculator ***' 
Dim PageLen,PageNo,TotalRecord,TotalPage,intID 
Dim PageStart,PageEnd 
PageLen = 2 
PageNo = Request.QueryString("Page") 
if PageNo = "" Then PageNo = 1 
TotalRecord = UBound(objRec.GetRows,2)+1 
PageStart = ((PageLen*PageNo)-PageLen) 
PageEnd = PageLen 
If TotalRecord <= PageLen Then 
    TotalPage =1 
ElseIf (TotalRecord Mod PageLen = 0) Then 
    TotalPage =(TotalRecord/PageLen) 
Else 
    TotalPage =(TotalRecord/PageLen)+1 
    TotalPage = Cint(TotalPage) 
End If 

'*** Close Object and Open New RecordSet ***' 
objRec.Close() 
strSQL = strSQL & "ORDER BY von, bis ASC LIMIT "&PageStart&" , "&PageEnd&" " 
objRec.Open strSQL, Conn, 1,3 
+0

会发生什么? – RonaldBarzell

+0

它也不能正常工作 – Paks

+0

这个问题的另一个版本:http://stackoverflow.com/questions/10387386/equivalent-of-limit-in-t-sql – MatthewMartin

回答

2

SQL Server不支持LIMIT。你可以阅读更多关于它在这里:当您只使用PageStart作为极限

http://channel9.msdn.com/Forums/Coffeehouse/102407-SQL-Server-and-LIMIT-clauses-on-SELECT-statements

+0

我该如何重写它,所以它等于我的选择查询 – Paks

+0

我包含的链接也有一个解决方法。它看起来像SQL Server支持TOP,这是你的开始。 – RonaldBarzell

+1

SQL Server和** ANSI SQL标准**不具有“LIMIT”.... –