- 締切済み
Access97でデータのカウント
Access97のお話です。 アルファベット26文字がランダムに並んでいるテーブルがあるとします。 ここで「A」は上から数えて何番目にあるか?、 というクエリーを作成したいのですが・・・ テーブル C B D A クエリー 「A」は「4」番目
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- ARC
- ベストアンサー率46% (643/1383)
#1でshigatuさんが仰るように、通し番号のフィールドを作成する方がより現実的な解決策になると思いますが、とりあえず、VBAを使えば仰る処理が実現できると思います。 VBAが分からないとのことですが、とにかくモジュールを新規作成しまして、何も考えずに以下のコードを貼り付けてください(笑)。 '***ここから*** Public Function 何番目(Expr As String, Domain As String, Criteria As Variant) As Long Dim RST As DAO.Recordset On Error Resume Next Set RST = CurrentDb.OpenRecordset(Domain, dbOpenSnapshot) If IsNull(Target) Then RST.FindFirst Expr & "IS NULL" Else RST.FindFirst Expr & "=" & Criteria End If If RST.NoMatch Then 何番目 = 0 Else 何番目 = RST.AbsolutePosition + 1 End If End Function '***ここまで*** んで、クエリ中に、関数を記述するのと同じ要領で 何番目("検索するフィールド","テーブル/クエリ名",検索する値) って感じで記述してやれば出来ると思います。 …あ、この質問は、ひょっとして、#14674の質問(参考URL(^^))の関連項目ではないでしょうか? この方法で、レコードの位置を取得しておいて、マクロのレコード移動で飛ばそうと(笑) それでしたら、こんなややこしいことをせずとも、何とかなります。 明日は、ちょっと朝早いので、今すぐには解答つけれませんが、明日あたり#14674の方に答えたいと思います。(既に他の方が答えておられなければ、ですが) 質問等ございましたら、補足をお願いします!
- shigatsu
- ベストアンサー率26% (511/1924)
もう一つフィールドを作って、通し番号を入れておくってのはだめですか? そもそもデータベースってテーブル内での並び順はあまり気にしないもんだと思うんですけど・・・たいがいクエリーの結果ってソートしたりするし。 Excelの方がそういうの得意ですよね。
お礼
詳しい説明ありがとうございます。 おっしゃるとおり#14674関連です(笑) #14674が無理ならこの方法で場所だけをメッセージとして表示し手動で移動してもらおうと思ったのですが。 もし#14674ができるのであれば即全て解決です。 お手数ですがよろしくお願いします。 ちなみにモジュールってどのように使用するのでしょうか?