• 締切済み

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

  • データのページ切り替え表示方法を教えてください

    データを複数のページに分けて表示させたいと思っていますが、 「次のページ」「前のページ」がうまく作れないでおります。 SQL文によるクリエ結果の先頭と最後のレコードID(ユニークでIDを振っています)を取得すれば、 次のページなら SELECT * FROM table_name id > [先頭レコードID] LIMIT 10; 前のページなら SELECT * FROM table_name id < [最後レコードID] LIMIT 10; とやればいいのかなと思っていますが、クリエ結果の最初と最後のレコードIDを取得する方法がわかりません。 どうか上記の件、ご教授くださいm(_ _)mペコリ

  • ページを表示できません

    初歩的な質問で恐縮です。 インターネットで、以前に「お気に入り」に登録したURLをクリックしたり、リンクされているURLをクリックすると「ページを表示できません。検索中のページは現在利用できません。webサイトに技術的な問題があるか、ブラウザの設定を調整してください」というメッセージが表示されることがありますよね。 これって、そのページ自体が現在は存在しないということなのでしょうか。それとも更新されていて、工夫すればその更新されたページを見ることができるのでしょうか?

  • asp.net C# 別画面にwebページを表示させたい

    ボタンがクリックされたときに別画面にHTMLのwebページを表示させたいのですがやり方がわかりません。 urlだけ指定して簡単にリンクさせることはできないのでしょうか。。

  • Accessでフォーム上に 直前の データを表示させるには

    Accessでフォーム上で、データを入力するのに、一つ前のレコードの データを基参考に 次のデータを入力したいと思います。一つ前のレコードを そのフォーム上に表示させるには どうすれば良いのでしょうか? あるレコードのすべてのフィールドの値を表示させたいのです。

  • ページ表示について

    sea_clear_sky8です。 環境 PWS Windows98SE MYSQL4 mysql接続し、mysqlの値を1ページに10個ずつ、ページを分けて 表示させたいのですが、作る考え方が浮かびません。 次へボタンで、次の10個を表示させたり、 前へボタンで、前の10個を表示させたりしたいです。 現在はmysqlに接続し、mysqlの値を<INPUT TYPE="TEXT> に入れて表示させることまではできています。 作り方の参考になることなら、なんでもいいので ご教授願います。 作るのに必要なASPメソッド等を教えて頂けたら有難いです。 どうかよろしくお願いします。

  • ページ切り替え機能

    ASPでページ切り替え機能をつけたいです。20件ごとに表示して下に”次の20件”のリンクを押すと次の20件が表示されるやつです。”前の20件”を押すと前の20件を表示する機能をつけたいです。教えてください

  • ページ切り替え機能

    ASPでページ切り替え機能をつけたいです。20件ごとに表示して下に”次の20件”のリンクを押すと次の20件が表示されるやつです。”前の20件”を押すと前の20件を表示する機能をつけたいです。教えてください。書き方が分かりません。countとってforで1から20までまわしたりしているんですが21件目からの表示をどう考えたら良いのか??

  • ページングの際のページ(データ)生成について

    ご教授よろしくお願いいたします。 現在Webサービスからデータを引っ張ってPHPアプリを作成中です。 試行錯誤しながら、なんとかページングも実装して ページ(データ)の表示もうまくいきました。 しかしながら、妙な現象に悩まされております。 Webサービスからのデータをサイト上に10件づつ表示させています。 ある特定のクエリ結果の場合だけサイト上のページ表示がおかしくなってしまうのです。 具体的には、検索結果が「11件、21件、31件...」というような場合です。 http://phero.do-kuchikomi.net/pheromone_goods/pherotica_hawk.html#hikaku 上記の検索結果は、31件で、ページングは1~4のナンバーが生成されています。 この場合、31件目を表示させるために「4」をクリックすると表示がおかしくなってしまうのです。 検索結果が「32件とか33件」とかだと正常に表示されます。 『○1件』の場合だけおかしくなってしまうのです。 原因を解明しようとしたのですが、力尽きてしまいました。 どなたかご教授願えないでしょうか? よろしくお願いいたします。 分かりにくい説明で申し訳ございません。

    • ベストアンサー
    • PHP
  • ページを表示できませんという表示

    URLをクリックすると ページを表示できません。 検索中のページは現在、利用できません。Webサイトに技術的な問題が発生しているか、ブラウザの設定を調整する必要があります。 と時々表示されます。これはどうすれば見れるようになるのですか?設定等を変えても見れないページなのですか?

  • 真っ白に表示されるページがあります。

     WEBのページでTOPは表示されるのに、リンクページに飛ぶといきなり 真っ白なページになる時があります。時間を置いて、再度リンクするも同じ。。。 インターネットセキュリティを「中」に設定し直しても同じです。どうすれば、 表示させる事が出来るのでしょう??