Как сделать пейджинг базы данных MS Access + поиск? - PullRequest
1 голос
/ 02 августа 2011

У меня есть база данных MS Access 2003 с таблицей с именем product1 с первичным ключом с именем Product Code. Столбец автоматического идентификатора отсутствует.

Я использовал этот 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]

Теперь моя проблема - поиск. Когда я ищу что-то в таблице базы данных и указываю это.

Как я могу убедиться, что подкачка работает нормально?

1 Ответ

4 голосов
/ 02 августа 2011

Я также запрашиваю Access из 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)

...