Access2000での順位表示について

このQ&Aのポイント
  • Access2000での順位表示に関する質問です。特定の条件を満たす場合、記録の順位を抽出したいです。
  • 質問文章では、200mメドレーの記録の順位を検索する方法について説明されています。
  • クエリやフォーム上のオプショングループを使用して、実施者の性別によって順位を計算するためのコマンドボタンの記述方法を知りたいです。
回答を見る
  • ベストアンサー

Access2000での順位表示について

以前も同様な質問をして回答いただいておりますが、応用が利かず、助けていただきたい次第です。200mメドレーにおける自己の記録の順位検索。自分のIDと検索対象性別(男 OR 女 OR 男女とも)を入力して検索、何人中何番かの値を得たい。 質問:コマンドボタンに下記のような記述をしたいが、どうすれば良いか? クエリ”200m記録”:ある実施者の記録より高い記録を抽出したもの クエリ”200m総合記録”:男女全ての実施者の記録 性別選択 :フォーム上のオプショングループ IF “実施者ID=” &ME![実施者ID] である実施者の性別が、-1(男) であり、検索対象が、0(女)である場合、Then ![200m順位] = DCount("実施者ID", "200m記録") + 1 & "/" & DCount("実施者ID","200総合記録", 性別選択 = 0)+1 IF “実施者ID=” &ME![実施者ID] である実施者の性別が、 0(女) であり、検索対象が、-1(男)である場合、Then ![200m順位] = DCount("実施者ID", "200m記録") + 1 & "/" & DCount("実施者ID", "200m総合記録", 性別選択 = -1)+1 IF “実施者ID=” &ME![実施者ID] である実施者の性別が、-1(男) であり、検索対象が、-1(男)である場合、Then ![200m順位] = DCount("実施者ID", "200m記録") + 1 & "/" & DCount("実施者ID", "200m総合記録", 性別選択 = -1)  IF “実施者ID=” &ME![実施者ID] である実施者の性別が、 0(女) であり、検索対象が、0(女)である場合、Then ![200m順位] = DCount("実施者ID", "200m記録") + 1 & "/" & DCount("実施者ID", "実施者総数", 性別選択= 0)  Else ![200m順位] = DCount("実施者ID", "200m記録") + 1 & "/" & DCount("実施者ID", "200m総合記録")

  • Cloes
  • お礼率42% (18/42)

質問者が選んだベストアンサー

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

お書きになった内容をVBAで書きますと、大体こんな感じになるかと思います。 尚、今回は動作検証をしていません。 もし何か問題がありましたら、補足をお願いします。 Private Sub コマンド1_Click() '以下の[変数]を使うことを宣言する   Dim 実施者性別 As Long '実施者の性別,長整数型    '実施者の性別を取得して、実施者性別(変数)に代入する  '([実施者]テーブルに[性別]フィールドがあるとする)   実施者性別 = DLookup("性別", "実施者", "[実施者ID] = " & Me![実施者ID]) '実施者の性別及び、性別選択の内容によって、表示する内容を変える   If 実施者性別 = -1 And Me.性別選択 = 0 Then     Me.[200m順位] = DCount("実施者ID", "200m記録") + 1 & "/" & DCount("実施者ID", "200総合記録", 性別選択 = 0) + 1   ElseIf 実施者性別 = 0 And Me.性別選択 = 1 Then     Me.[200m順位] = DCount("実施者ID", "200m記録") + 1 & "/" & DCount("実施者ID", "200m総合記録", 性別選択 = -1) + 1   ElseIf 実施者性別 = -1 And Me.性別選択 = -1 Then     Me.[200m順位] = DCount("実施者ID", "200m記録") + 1 & "/" & DCount("実施者ID", "200m総合記録", 性別選択 = -1)   ElseIf 実施者性別 = 0 And Me.性別選択 = 0 Then     Me.[200m順位] = DCount("実施者ID", "200m記録") + 1 & "/" & DCount("実施者ID", "実施者総数", 性別選択 = 0)   Else     Me.[200m順位] = DCount("実施者ID", "200m記録") + 1 & "/" & DCount("実施者ID", "200m総合記録")   End If End Sub

Cloes
質問者

お礼

ありがとうございました。 また、よろしくお願いします。 どうぞ、良いお年を!

関連するQ&A

  • ACCESS2003でテーブルと一致したときだけメッセージを表示するには?

    はじめまして、アクセスでデータベースを作成していたのですが、わからないことが出てきてしまい困っております。 フォーム上で、テキストボックスに入力した文字列(テキスト形式)をテーブル内のデータと照合し、一致すれば「保留対象の商品です」、なければ「保留対象の商品ではありません」といったテキストボックスを表示できるようなボタンを作りたいのです。 登録条件を変更するのではなく、メッセージが表示できさえすれば良いのです。 IFとDcount、msgboxを組み合わせることで表示できるような気はするのですが、エラーが出てしまい、作動してくれません。 私の書いたVBAコードは IF Dcount("フィールド名","テーブル名","フィールド名="" & Me!テキストボックス名") = 1 Then Msgbox "保留対象の商品です" Else msgbox "保留対象の商品ではありません" End IF 結局、テキストボックスに入力されたデータと対象のテーブル内データを検索し、一致するデータを数えて、1個のときにメッセージを出すようにしてみたのです。 しかし、うまく動いてくれません。。 詳しい方がいらっしゃったらアドバイスいただければ幸いです。 よろしくお願いいたします。

  • Accessでシステムを作ってます

    AccessとVBAでシステムを作成してます。初心者です。 検索結果を非連結のテキストボックスに表示させる方法を教えてください。 条件(1) フォームのレコードはどのテーブルとも紐づいていない 条件(2) 2つのテーブルから1つの検索ボタンで検索できるようにしたい テーブルA;案件マスタ テーブルB:リソースマスタ ・検索テキストボックス(1つ) ・検索ボタン(1つ) 条件(3) 案件ID、リソースIDはともに数値型です。 検索結果表示テキストボックス(非連結) ・案件IDテキストボックス:案件マスタより検索した案件IDを表示する ・リソースIDテキストボックス:リソースマスタより検索したリソースIDを表示する 下記のように考えていますが ・非連結のテキストボックスに検索結果を表示させる ・1つの検索ボタンで2つのテーブルから検索ができるようにする 方法がわかりません。 どのようなコードを追記したらいいのか教えていただけないでしょうか。 よろしくお願いいたします。 Private Sub btn検索ID_Click() Dim strFilter As String Me![案件マスタ].SetFocus If Me!案件IDテキスト = Me![案件マスタ]![案件ID] Then strFilter = " AND 案件ID= " & Me!案件IDテキスト End If If Me!テキストリソースID = Me![リソースマスタ]![リソースID] Then strFilter = strFilter & " AND リソースID= " & Me!リソースIDテキスト End If 'Forms!ID検索.Filter = Mid(strFilter, 6) Forms!ID検索.FilterOn = True Me.案件IDテキストボックス= Null Me.リソースIDテキストボックス = Null

  • Access2003 入力フォームの表示検索について

    フォームに非連結のボックスを作成し、以下のようなコードを追加し検索用に作成したのですが、 これが不味いのか、稀にデータの修正を行うと違うデータがTabキーもしくは矢印キーの移動で変わってしまいます。 例: ID1 店名 A店 住所 A県 代表者 A様 このデータの店名ボックスの店名をB店に変え、Tabや矢印で 次のボックスに移動すると、 ID1 店名 B店 住所 C県 のように関係ないデータが表示され、さらに移動すると 代表者 C様 と別のデータが移動するごとに表示されてしまいます。 (関係の無い別のIDデータが表示される。) なぜこのようなことが起きるのでしょうか? もし分かる方回答のほどお願いします。 企業コード(検索するフィールド) テキスト_ID検索(ボックス名) Private Sub テキスト_ID検索_AfterUpdate() Dim rs As DAO.Recordset If IsNumeric(Me.テキスト_ID検索) Then Set rs = Me.RecordsetClone rs.FindFirst "企業コード=" & Me.テキスト_ID検索 If rs.NoMatch Then '番号が見付からなかった場合の処理 MsgBox "データが見付かりません。" Else Me.Bookmark = rs.Bookmark End If rs.Close End If End Sub

  • ACCESS どこがおかしいのか?

    ACCESSで。クエリからフォームを作成し、検索フォームを作成しようとしています。 AND条件とOR条件を作り検索(抽出)を行いたいのですが、何が間違っているのか、 検索をかけるとすべて「登録がありません」になってしまいます。 どこが間違っているのか、もしくは代替案を教えていただけますでしょうか。 以下は記述した、VBAコードです。 Private Sub 検索ボタン_Click() Dim db As DAO.Database Dim rs As DAO.Recordset Dim stFil As String Set db = CurrentDb() Set rs = db.OpenRecordset("Q_Autoweb", dbOpenDynaset) 'オプションボタンで条件を選択 If 検索条件 = 1 Then rs.Filter = "[タイトル]='" & タイトル検索 & "' and [本文]='" & テキスト15 & "'" Else rs.Filter = "[タイトル]='" & タイトル検索 & "' or [本文]='" & テキスト15 & "'" End If Set rs = rs.OpenRecordset Set Me.Recordset = rs If rs.EOF = True Then MsgBox "登録がありません" Else Me.ID = rs!ID Me.案件名 = rs!案件名 Me.タイトル = rs!タイトル Me.本文 = rs!本文 End If rs.Close Set rs = Nothing db.Close Set db = Nothing End Sub よろしくお願いします。

  • ACCESS

    現在以下のシステムを検討しています。 (1)ログインフォームと(2)トップフォーム(3)注文フォームが別々に存在しており、 (1)ログインフォームは  ・ログインID入力用のテキストボックスが一個  ・パスワード入力用のテキストボックスが一個  ・ログインボタンが1個  設置されています。 以下はログインボタンクリック時に動作するプログラムです。 Private Sub cmdLogIn_Click() Dim Res If IsNull(Me.txtID) Then MsgBox "IDを入力してください" Me.txtID.SetFocus Exit Sub End If If IsNull(Me.txtPass) Then MsgBox "パスワードを入力してください" Me.txtPass.SetFocus Exit Sub End If Res = DLookup("パスワード", "T顧客", _ "顧客ID='" & Replace(Me.txtID, "'", "''") & "'") If IsNull(Res) Then MsgBox "該当するIDはありません。正しいIDを入力してください。" Me.txtID.SetFocus Exit Sub End If If Res = Me.txtPass Then DoCmd.OpenForm "注文フォーム" '----ID,pass合致でフォームを開く。 Me.txtID = Me.txtID2 Me.txtPass = Me.txtPass2 DoCmd.Close acForm, "Fログイン" Else MsgBox "パスワードが異なります。", vbOKOnly + vbCritical Me.txtPass.SetFocus End If End Sub (2)トップフォームは  商品のリストが画像付き(商品一個につき画像一個)  で示され、画像を押すと商品別に作成してある注文フォームに進むのですが、  ログイン完了していないとログインを促すメッセージが出て注文フォームが開かないよう  にしています。  トップフォームにはテキストボックスを2個不可視の状態で配置しております。  以下は商品画像に埋め込んであるコマンドです。 Private Sub 商品画像 1_Click() Dim Res If IsNull(Me.txtID) Then MsgBox "ログインしてください" Exit Sub End If If IsNull(Me.txtPass) Then MsgBox "ログインしてください" Exit Sub End If If Res = Me.txtPass Then DoCmd.OpenForm "商品名" '----ID,pass合致で注文フォームを開く。 End If End Sub   (3)注文フォームは  ・数量選択のコントロールボックス  ・注文ボタン  ・キャンセルボタン  を設置しています。 【以下が質問内容になります】 「ロフインフォーム」内の入力値(テキストボックスに入力されていたIDやパスワード値)を注文フォーム内のテキストボックスに取得させる(あるいは設定させる)にはどのようにすればよいのでしょうか? 注文フォームにはテキストボックス2個( ID入力用と Password入力用)を不可視で配置しています。こちらのテキストボックス2個については手動入力は行わず、注文フォームが開いた際にログイン時の ID, Paswordがテキストボックスの中に自動的に入力あるいは設定されるようにしたいのですが、どのようにすればよいかがわかりません。 因みにログイン ID,Passwordは複数セットあり、ユーザーがログイン完了後、注文フォームを閉じるまでの間は 同一のID, Paswordの内容を保持したいと考えています。 上記の中にID,Paswordを保持させるようなコードを入れることは可能でしょうか? 注文フォームを開く際のコードに何か入れることができるのではないかと考えていたの ですが、よい案が浮かびません。 他によいやり方などがあれば教えていただけますでしょうか? よろしくお願いします。

  • アクセスのフォームで数値型の複数検索のについて

    アクセスのフォームで検索ボタンを設置して複数検索をしています。 下記の状態でうまくいってたのですが、依頼でまた一つ検索項目が追加になりました。 追加になった項目は数値型で”を抜いたりしたのですがうまく検索できません。 どうすればうまくいくか教えて下さい。 今のコードは以下の通りです。 Private Sub 検索ボタン_Click() Dim L1 As String If Nz(Me.品名検索, "") <> "" Then L1 = L1 & " AND 品名 Like '*" & Me.品名検索 & "*'" End If If Nz(Me.採取日検索, "") <> "" Then L1 = L1 & " AND 採取日 = #" & Me.採取日検索 & "#" If Nz(Me.数値検索, "") <> "" Then L1 = L1 & " AND 数値 = " & Me.数値検索 End If End If If L1 <> "" Then L1 = Mid(L1, 6) Me.Filter = L1 Me.FilterOn = True Else Me.Filter = L1 Me.FilterOn = False End If End Sub 数値の部分が数値型の新たな検索です。 宜しくお願い致します。

  • 検索結果を非連結のテキストボックスに表示させるには

    accessでシステム開発しています。初心者です。 検索結果を非連結のテキストボックスに表示させる方法を教えてください。 条件(1) フォームのレコードはどのテーブルとも紐づいていない 条件(2) 2つのテーブルから1つの検索ボタンで検索できるようにしたい テーブルA;案件マスタ テーブルB:リソースマスタ ・検索テキストボックス(1つ) ・検索ボタン(1つ) 条件(3) 案件ID、リソースIDはともに数値型です。 検索結果表示テキストボックス(非連結) ・案件IDテキストボックス:案件マスタより検索した案件IDを表示する ・リソースIDテキストボックス:リソースマスタより検索したリソースIDを表示する 下記のように考えていますが ・非連結のテキストボックスに検索結果を表示させる ・1つの検索ボタンで2つのテーブルから検索ができるようにする 方法がわかりません。 どのようなコードを追記したらいいのか教えていただけないでしょうか。 よろしくお願いいたします。 Private Sub btn検索ID_Click() Dim strFilter As String Me![案件マスタ].SetFocus If Me!案件IDテキスト = Me![案件マスタ]![案件ID] Then strFilter = " AND 案件ID= " & Me!案件IDテキスト End If If Me!テキストリソースID = Me![リソースマスタ]![リソースID] Then strFilter = strFilter & " AND リソースID= " & Me!リソースIDテキスト End If ’↓?いらないかも.. 'Forms!ID検索.Filter = Mid(strFilter, 6) Forms!ID検索.FilterOn = True Me.案件IDテキストボックス= Null Me.リソースIDテキストボックス = Null

  • アクセスVBA(先日の続きになります)

    前回教えていただきました検索抽出のVBAですが、抽出がうまくできなくなってしまいました。 抽出条件を入力しているにもかかわらず、全部のデータが表示されてしまいます。 どこがまずいのかわかりましたら、ぜひ教えてください。 Private Sub btn_検索02_Click() Dim kensaku As String If Not Me![t_04] = "" Then kensaku = kensaku & _ "([舗装施行年度] Like '*" & Me![t_04] & "*') AND " If Not Me![t_05] = "" Then kensaku = kensaku & _ "([舗装工事名] Like '*" & Me![t_05] & "*') AND " If Not Me![t_06] = "" Then kensaku = kensaku & _ "([舗装区間01] Like '*" & Me![t_06] & "*') AND " If Not Me![t_07] = "" Then kensaku = kensaku & _ "([舗装区間02] Like '*" & Me![t_07] & "*') AND " If Not Me![t_08] = "" Then kensaku = kensaku & _ "([改良施行年度] Like '*" & Me![t_08] & "*') AND " If Not Me![t_09] = "" Then kensaku = kensaku & _ "([改良工事名] Like '*" & Me![t_09] & "*') AND " If Not Me![t_10] = "" Then kensaku = kensaku & _ "([改良区間01] Like '*" & Me![t_10] & "*') AND " If Not Me![t_11] = "" Then kensaku = kensaku & _ "([改良区間02] Like '*" & Me![t_11] & "*') AND " If Not Me![t_12] = "" Then kensaku = kensaku & _ "([台帳作図年度] Like '*" & Me![t_12] & "*') AND " If Not Me![t_13] = "" Then kensaku = kensaku & _ "([台帳調査名] Like '*" & Me![t_13] & "*') AND " If kensaku <> "" Then kensaku = Left(kensaku, Len(kensaku) - 5) DoCmd.OpenForm "検索結果", , , kensakum, acFormReadOnly DoCmd.Maximize DoCmd.Close acForm, Me.Name End If End Sub

  • accessの検索フォームについて(複数条件)

    access初心者です。 本などを参考に検索フォームを作成しました。 1つの条件で検索することは出来たのですが、複数の条件を入力するとうまく検索出来ません。 全ての条件を満たすデータの抽出を行いたいと思います。 「あ」「い」「う」というテキストボックスを用意しています。 Private Sub コマンド14_Click() If Not IsNull(Me.txt_あ) Then ' Me.Filter = "あ LIKE '*" & Me!txt_あ & "*'" End If If Not IsNull(Me.txt_い) Then ' Me.Filter = "い LIKE '*" & Me!txt_い & "*'" End If If Not IsNull(Me.txt_う) Then ' Me.Filter = "う LIKE '*" & Me!txt_う & "*'" End If Me.FilterOn = True End Sub よろしくお願いします。

  • Accessのレポートでデータがなくても罫線だけ表示させたい

    Win2000,Access2000を使用しています。 Microsoftのホームページで「[AC97] レコードがない場合も用紙の最後まで罫線を出力する方法」を応用して以下のVBを作成しました。 ですが、9行目までデータを入力すると9行目と10行目の両方の行に9行目のデータが表示されます。 8行目まででしたら、9、10行目は空白で罫線(直線)が表示されます。 どなたか解決法をご存知でしたらお教え下さい。 Option Compare Database  Dim A As Integer '-------今何行目なのかをカウントする為の変数  Dim B As Integer '-------今回印刷する予定のレコード件数を入れて                  おく変数 ---------------------------------------------------- Private Sub レポートヘッダー_Format(Cancel As Integer, FormatCount As Integer)   A = 0   B = DCount("ID", "Q05商品リスト")   Me!改ページ3.Visible = False End Sub ---------------------------------------------------- Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)  A = A + 1  If A Mod 10 = 0 Then    Me!改ページ3.Visible = True  Else    Me!改ページ3.Visible = False    If A < B Then      Me.NextRecord = True      Me!商品名.Visible = True      Me!メーカー名.Visible = True    ElseIf A = B Then      Me.NextRecord = False      Me!商品名.Visible = True      Me!メーカー名.Visible = True    Else      Me.NextRecord = False      Me!商品名.Visible = False      Me!メーカー名.Visible = False    End If   End If End Sub

専門家に質問してみよう