2011-08-02 16 views
1

Product Codeという名前のプライマリキーを持つproduct1というテーブルを持つMS Access 2003データベースがあります。自動ID列はありません。MS Accessデータベースのページング+検索の操作方法は?

この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

私はあなたのクエリ構文をunderstudが、何abuout '「%」のようdescription_fieldはありません+ @ var + '%' ' –

+0

これはページングを行うとは思わないが、これは別のページにアクセスすることを許可していない。ページ1のみ)ページ2 /ページ3などの操作方法について質問がありますか? – AidanO

答えて

4

私は(ページングとし、検索)や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); 

注ことこれが機能するためには、すべてのパラメータ
を供給する必要があります(あなたが実際に何をフィルタリングしたくない場合は、ちょうどWHERE句に1=1を置く)

+0

この有益なクラスをありがとう。よくやった。 –

関連する問題