- ベストアンサー
DAOのSeekメソッドの不等号について
DAOのSeekメソッドの不等号について いつもお世話になっております。 あるテーブルの項目A,B,Cにインデックス"検索用"と名前をつけたとします。 DAOのSeekメソッドで、 RS.index = "検索用" RS.seek ">=", 10, 20, 30 とした場合、返される結果は、クエリで Where A >= 10 and B >= 20 and C>=30 と条件指定したものと同じでしょうか? よろしくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じだと思ってください(実際にはこんなことしてません) Where A & B & C >= 10 & 20 & 30 イメージがつかめないかな? Where A * 1000000 + B * 1000 + C >= 10020030 こんな感じです。 正確に書くと Where A = 10 And B = 20 And C >= 30 Or A = 10 And B > 20 Or A > 10 です。
その他の回答 (3)
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
ぬぁぁ 失礼しました。 条件文、">="でしたね。。。。 テーブルIndexの問題より、私の頭の中が問題だ。。。 でも、、、、 先ほど言った探すという点は変わっておりません。 大変都合の良い話ではありますが、失礼な一文を読み飛ばして、他の文章に注目してくれると助かります。。。。
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
すいません。 言葉不足です。 あるテーブルの項目A,B,Cにインデックス"検索用"と名前をつけたとします。 DAOのSeekメソッドで、 RS.index = "検索用" RS.seek ">=", 10, 20, 30 とした場合、返される結果は、クエリで Where A >= 10 and B >= 20 and C>=30 と >返される結果は、クエリで~~同じでしょうか? ×→・はい一緒です ○→・似ています 「SEEK」=探す という意味で、最初に見つかったところにカレントを移すと言うだけに過ぎません。 SQL文のWHEREは抽出した結果ですので、その抽出結果の先頭と結果が同じところを探しだすメソッドです。 抽出ではなく探すだけですので、その次を見てしまうと、SEEKの次を指します。 テーブルにはIndexを張ることで実現するメソッドで、そもそも複数の抽出されるようなIndexの張り方はどうかと、、、 単に複数抽出が見込まれるのであれば、クエリかSQL文で行いましょう。 それが嫌なのであれば ・FindFirst ・FindNext を組み合わせると、テーブルに張ったIndexは利用しませんが、同様な処理が可能です。
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
はい 一緒です
補足
ご回答ありがとうございます。 ただ、先ほど実際にテーブルを作ってためしてみたのですが、 項目A、B、Cの順でインデックスを作成すると、 内部的に以下の順番に並ぶと思うんですけど、 A B C 10 10 10 10 10 20 10 20 20 10 20 30 20 10 10 20 10 30 質問の例で行くと、ヒットするのは4行目だけだと思うのですが、 レコードセットには4行目以降が入っています。 seekメソッドで>=を使用した場合は、始めにこの条件に合致するデータより うしろ全部のデータをさしてるような気がするのですが。