• 締切済み

ASPでSQLデータ表示の際のページ機能について

現在、IIS+ASPでSQLServerのデータを参照するという極めて単純なWebアプリを 作成しております。 今回のWebアプリには「前へ」リンクと「次へ」リンクを付けてページ機能を 持たせます。1ページ1レコードです。 そこでひとつ問題点が発生しまして皆さんにご質問させて頂きました。 まず簡単にWebアプリ仕組みを申しあげますと、 ・「前へ」のリンクのURLの引数には現在のレコード位置-1の値を追加する。 ・「次へ」のリンクのURLの引数には現在のレコード位置+1の値を追加する。 ・ページを表示する時に取得したレコードセットに対して上記引数分の  MoveNextを行う。 ・データを表示する。 そこで気になるのが、レコードが追加されたり、削除されたりした時に シーケンスがずれてしまう現象が予測されるというところです。 例えば現在表示しているレコードより前のデータがページ表示後に消された場合、 「次へ」をクリックすると、ひとつレコードが飛ばされてしまいます。 あるいはページ表示後に現在表示しているレコードより前にデータが追加された場合、 「次へ」をクリックすると、再度同じレコードが表示されてしまいます。 こういった状況を防ぐには、一般的に皆さんはどのような手法を用いられるの でしょうか。 どうか知恵をお貸し下さい。宜しくお願い致します。

みんなの回答

  • sam_inoue
  • ベストアンサー率47% (27/57)
回答No.2

VB6でActiveX.dllを作って運用していますが、 Class_Initialize,TerminateでConnectionを接続、破棄しており ページ間でRecordSetを保持できないため、 毎回読み直しという同様のことをしていますが、 ページ1件での「前へ」「次へ」は行なわないため、 このような問題には意識が希薄です。 一覧表示は100件/頁としており、 RecordSetからMoveで100 * (intPage - 1)で飛ばしています。 この時は追加や削除によるズレは発生することを説明しており、 処理的には「無視」ですね。

  • kikaida-
  • ベストアンサー率69% (37/53)
回答No.1

レコードセットを開くときにスナップショットで開いて、セッション変数に保持してやればご希望通りの動きは出来ると思います。 ただ追加されたデータや、変更されたデータは見えなくなるので、そういう仕様だということをユーザーに認識してもらう必要があります。 ついでにいうなら、最新のレコードセットを開いて最新情報に更新するようなボタンもあったほうがいいかと思います。

関連するQ&A