为什么这个语句会抛出OleDbException

时间:2013-11-26 12:22:26

标签: vb.net visual-studio-2010 visual-studio

我正在尝试创建一个分页系统,并在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)

1 个答案:

答案 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
相关问题