• 締切済み

Access97でデータのカウント

Access97のお話です。 アルファベット26文字がランダムに並んでいるテーブルがあるとします。 ここで「A」は上から数えて何番目にあるか?、 というクエリーを作成したいのですが・・・ テーブル C B D A クエリー 「A」は「4」番目

みんなの回答

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.2

#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の方に答えたいと思います。(既に他の方が答えておられなければ、ですが) 質問等ございましたら、補足をお願いします!

参考URL:
http://www.okweb.ne.jp/kotaeru_reply.php3?q=14674
noname#5002
質問者

お礼

詳しい説明ありがとうございます。 おっしゃるとおり#14674関連です(笑) #14674が無理ならこの方法で場所だけをメッセージとして表示し手動で移動してもらおうと思ったのですが。 もし#14674ができるのであれば即全て解決です。 お手数ですがよろしくお願いします。 ちなみにモジュールってどのように使用するのでしょうか?

  • shigatsu
  • ベストアンサー率26% (511/1924)
回答No.1

もう一つフィールドを作って、通し番号を入れておくってのはだめですか? そもそもデータベースってテーブル内での並び順はあまり気にしないもんだと思うんですけど・・・たいがいクエリーの結果ってソートしたりするし。 Excelの方がそういうの得意ですよね。

関連するQ&A