削除されたレコードを持つデータベースを継承しました。私はニュース項目の表に取り組んでいます。これは、これらのレコードが削除されたIDが不足していることを意味します。 アーカイブ内の任意のニュース記事を開くことができます(1000秒)。次に、次と前のボタンを使用してすべてのニュース記事をナビゲートします。現在、削除された次のレコードに移動すると、ファイルのレコードセットの終わりがスローされ、「ニュースアイテムが使用できなくなりました」という既定のメッセージが表示されます。 この不足しているレコードを検出し、次の有効なニュース記事(IDなど)に移動する方法はありますか?私はこのサイトの古いaspを使用しています、レコードセットをナビゲートする際にこれを検出する方法はありますか?このタイプの機能はデータベースから来なければなりませんか?助けてくれてありがとう。レコードが選択されていない場合(削除されている場合) - 次の有効レコードを選択します。
答えて
SQL Server 2005以降については、MSDNを参照してください。
row_number
を使用すると、連続する数値列を作成できます。
1)もちろんフロントエンド(あなたの 'レコードセットのファイルの終わり')に影響を与えることが分かっているので、手動でIDを増減することができ、DBから別のレコードを取得しようとすると、データベースに入ることなく実行できます。しかし、行の中の多くのレコードが欠落していると、これは非常に効果的ではありません。私は代わりにデータベースのコードを変更することをお勧めします。 @Idは、あなたがフェッチしようとしている識別子である
SELECT * FROM News WHERE [email protected]
:あなたはこのようなクエリを持っていると仮定すると
。代わりに、次のようなものがあります:
SELECT * FROM News WHERE Id=(SELECT MIN(Id) FROM News WHERE Id>[email protected])
これにより、最初に利用可能なレコードを選択することができます。 MINの代わりにMAXを使用し、> =の代わりに< =を使用して、前のニュース項目を検索します。上記の例は次のニュース項目で機能するはずです。
また、このアプローチでは、探していたものではなく、データベースからフェッチした値に基づいて、次/前のレコードの識別子を増減する必要があることを忘れないでください。例:SQLテーブルには次の識別子があります(1,5,12,21)。あなたはId = 1のニュースアイテムを開いています。 '次へ'ボタンはId> = 2を探し始め、Id = 5のレコードを返します。あなたがそれを開くと、あなたの「次へ」ボタンはId> = 6(2ではない)のレコードを探します。
次の点は、フェッチしようとしているレコードの識別子だけでなく、検索する方向も指定する必要があることです。また、このパラメータはhttpクエリ文字列で渡す必要があります。 ?以下のURLを持つすべてのページが同じ項目が表示されますので、
また、このアプローチは非常にユーザーフレンドリーではないことがあります?
サイト/ news.aspをIdは= 2 &方向=次
サイト/ news.asp同上= 3 &方向=次
サイト/ news.asp?ID = 4 &方向=次
サイト/ news.asp?次のID = 5 &方向=
2)だから、多分それはよりUSER-になりますあなたがcを表示しているときに、どのレコードが前もって前にあるかどうかを判断することができます尿道記録
SELECT (SELECT MAX(Id) FROM News WHERE Id<@Id) as previousId, (SELECT MIN(Id) FROM News WHERE Id>@Id) as nextId
をして、それに対応し、あなたの「次へ」&「前」ボタンのURLを更新します。この場合、あなたは次のようにクエリを実行する必要があります。したがって、前の例ではId = 5のニュースアイテムを開くと 'previous'ボタンはId = 1に直接ナビゲートし、 'Next'ボタンはId = 12にナビゲートします。
私は2番目のアプローチがより少ない変更で実装でき、対応するレコードが利用できない場合は '次へ' & 'Previous'リンクをグレーアウトすることもできますpreviousIdまたはnextIdのクエリによってNULLが返されることによって)。
ホープ、このことができます:)
SELECT TOP 1 *
FROM news
WHERE id >= @next_id
ORDER BY
id
- 1. チェックボックスが選択されている場合はレコードを表示
- 2. ラジオボタンが選択されていない場合、セルの値を削除する
- 3. jQuery - チェック選択オプションが選択されている場合
- 4. オプションが選択されていない場合に選択します
- 5. 選択されている場合はアラートが他の選択肢で既に選択されている
- 6. 前のものが選択されている場合は、次の要素を選択してください。
- 7. リストボックスが選択されている場合、Excelの行を削除する
- 8. ラジオボタンが選択されていない場合の問題
- 9. オプションが選択されていない場合のステートメント
- 10. ラジオボタンの値が選択されていない場合は、
- 11. 行選択が既に選択されている場合チェックボックスがチェックされています
- 12. オプションが選択されていない場合、無効にするボタンangularJS
- 13. 選択ボックスで何も選択されていない場合はjqueryチェック
- 14. 最新のレコードがない場合はMySQLの選択
- 15. オプション1が選択されている場合、jQueryの選択ボックス
- 16. 他の選択ボックスで値が選択されている場合は、選択ブロックを更新したい
- 17. md-radio-buttonのオプションが選択されている場合にmd-checkboxを有効にしてください
- 18. 任意の行が選択されている場合はJTable
- 19. インストールする機能が選択されていない場合は、[次へ]ボタンを無効にしたい
- 20. SQL文で選択されていないレコードを選択する方法は?
- 21. Vue:スタイルリスト行が選択されている場合
- 22. ブートストラップ/ Javascript - 選択されている場合はチェックボックスをオンにし、そうでない場合はすべてを選択解除します
- 23. 最初の要素が選択されている場合、他の要素が選択されます
- 24. Angular2:値が選択されていない場合はselectにクラスを追加/値の場合は除外
- 25. ドロップダウンで1つが選択されている場合、SQLは2つのレコードを取り出します
- 26. 値が選択されている場合はチェックボックスを無効にする
- 27. オプションが選択されている場合はリストを無効にする
- 28. すべてを選択した場合に完了したレコードと完了していないレコードを表示
- 29. 子カテゴリチェックボックスが選択されている場合親チェックボックスが自動的に選択されます
- 30. 無効にするスクリプト選択したオプションが選択されている場合
あなたは数値IDを使用してこれらの項目を特定していて、前および次のボタンは、単に追加または1を減算した場合、それは、それを意味するものではありませんアイテム3 doesnの場合アイテム2を開くので、前のボタンはアイテム2に再びリンクしますか?これは現在どのように機能していますか? – Rob
SQLサーバーのバージョンは? –