我正在尝试创建一个分页系统,并在SO中发布了一个包含实现此目的的代码。但是,当我运行我的查询时,它会抛出引用的错误。我有双重检查代码,但看不到错误。我使用Access 2010作为db。有人可以指出我的错误。感谢
SELECT语句包含保留字或参数名称 拼写错误或丢失,或标点符号不正确。
Dim Row_Per_Page As Integer = 4
Dim TotRows As Integer = 17
Dim Page_Number As Integer = 2
Dim oledbCmd As OleDbCommand = New OleDbCommand("Select TOP '" & Row_Per_Page & "' *, Count(*) As '" & TotRows & "' From [Select Top('" & TotRows & "' - (('" & Page_Number & "' - 1) * '" & Row_Per_Page & "'))From Postings Order By [Date] DESC] Order By [Date] ASC", oledbCnn)
答案 0 :(得分:0)
我认为您在查询结束时遇到问题,特别是此部分。
从过帐按[日期] DESC排序]按[日期] ASC “
排序首先你有两个Order By,第二个我认为你在' [Date] DESC '上忘记了',['之前的'DESC''''你的第一个订单。
编辑:该链接非常有用。很难读出这样一个很长的查询,比如你在SO上发布的那个查询只有一行。
忘记我之前说过的话。我认为问题在这里是大胆的。
“选择TOP”& Row_Per_Page& “' ,Count( )As'”& TotRows & “'从[选择顶部('& TotRows&'' - - (('”& Page_Number&“' - 1)*'”& Row_Per_Page&“'))从发布顺序按[日期] DESC]按[日期] ASC命令“
您正在命名您的计数字段17,并搞砸了该网站上列出的代码。选择Count查询应该如下所示。
SELECT Count(*) AS TOTAL FROM Table1
这会在Table1中返回一个名为'TOTAL'的字段,告诉你那里有多少条记录。
使用以下内容进行查询,它应该有效。
Select TOP Row_Per_Page *, Count(*) AS TOTAL From [Select TOP (TotRows - ((Page_Number - 1) * Row_Per_Page) From Postings Order By ColumnName DESC] Order By ColumnName ASC