Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何进行MS Access数据库分页+;搜索?_Sql_Ms Access 2003_Data Paging - Fatal编程技术网

Sql 如何进行MS Access数据库分页+;搜索?

Sql 如何进行MS Access数据库分页+;搜索?,sql,ms-access-2003,data-paging,Sql,Ms Access 2003,Data Paging,我有一个MS Access 2003数据库,其中有一个名为product1的表,主键名为Product code。没有自动id列 我已经使用此sql来进行自定义数据分页 SELECT * FROM ( SELECT Top 1 -- = PageSize * FROM ( SELECT TOP 1 -- = StartPos + PageSize * FROM product1 ORDER BY product1.[Product Code] )

我有一个MS Access 2003数据库,其中有一个名为
product1
的表,主键名为
Product code
。没有自动id列

我已经使用此sql来进行自定义数据分页

 SELECT *
FROM (
  SELECT Top 1  -- = PageSize
  *
  FROM
  (
   SELECT TOP 1  -- = StartPos + PageSize
   *
   FROM product1
   ORDER BY product1.[Product Code]
  ) AS sub1
  ORDER BY sub1.[Product Code] DESC
 ) AS clients
ORDER BY [Product Code]
现在我的问题是搜索。当我在数据库表中搜索某些内容并指向它时

如何确保分页仍能正常工作?

我也在从C#查询访问权限(通过分页和搜索),并使用以下代码构建所有查询:

var sb = new StringBuilder();
sb.Append("select {0} from {1}");
sb.Append(" where {3} in (");
sb.Append("select top {4} sub.{3}");
sb.Append("    from (");
sb.Append("          select top {5} tab.{3}");
sb.Append("          from {1} tab");
sb.Append("          where {2}");
sb.Append("          order by tab.{3}");
sb.Append("    ) sub");
sb.Append("    order by sub.{3} desc");
sb.Append(")");
sb.Append("order by {3}");

sql = string.Format(sb.ToString(), this.ColumnsToSelect, this.TableName, 
    this.WhereClause, this.OrderBy, this.PageSize, this.PageNum * this.PageSize);
请注意,为了使其工作,必须提供所有参数 (如果您实际上不想筛选任何内容,只需将
1=1
放入
WHERE
子句中即可)

我也在从C#查询访问权限(通过分页和搜索),我正在使用以下代码构建所有查询:

var sb = new StringBuilder();
sb.Append("select {0} from {1}");
sb.Append(" where {3} in (");
sb.Append("select top {4} sub.{3}");
sb.Append("    from (");
sb.Append("          select top {5} tab.{3}");
sb.Append("          from {1} tab");
sb.Append("          where {2}");
sb.Append("          order by tab.{3}");
sb.Append("    ) sub");
sb.Append("    order by sub.{3} desc");
sb.Append(")");
sb.Append("order by {3}");

sql = string.Format(sb.ToString(), this.ColumnsToSelect, this.TableName, 
    this.WhereClause, this.OrderBy, this.PageSize, this.PageNum * this.PageSize);
请注意,为了使其工作,必须提供所有参数
(如果您实际上不想筛选任何内容,只需将
1=1
放在
WHERE
子句中即可)

我不了解您的查询语法,但了解一下
WHERE description_字段,如“%”++@var++'%
我认为这不会为您进行分页,这不允许您访问其他页面,它只允许您显示前x个结果(即仅第1页)是您的问题,如何执行第2页/第3页等?我不了解您的查询语法,但了解什么是
where description_字段,如“%”++@var++'%
我认为这不会为您执行分页,这不允许您访问其他页面,它只允许您显示前x个结果(即仅第1页),您的问题是如何执行第2页/第3页等?