我有一个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]
现在我的问题是搜索。当我在数据库表上搜索某些内容并指出它时。
如何确保静止分页工作正常?
答案 0 :(得分:4)
我也在查询C#中的Access(使用分页和搜索),我正在使用以下代码来构建我的所有查询:
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
子句中)