-PR-
解決済み

アクセス2000で複数条件での検索

  • すぐに回答を!
  • 質問No.75713
  • 閲覧数249
  • ありがとう数4
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 44% (55/123)

アクセス2000で、試験結果の管理をしようと思っています。
試験によって合格点が違うので、合否結果はフラグ(1=合格、2=不合格)で管理しています。

フォームにボタンを作って、ボタンをクリックしたら合格者(あるいは不合格者)
だけを表示する形にしたのですが、受験日と合否のフラグの両方を条件として、
データの抽出を行いたいのですが、ボタンのコードビルダはどのようにしたら良いのでしょうか?ちなみに、ボタンを作った時の関連付けは受験日となっているのでコードは下記のようになっています。

Private Sub 抽出採用日_Click()
On Error GoTo Err_抽出採用日_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "対象者"
stLinkCriteria = "[受験日]=" & "#" & Me![受験日] & "#"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_抽出採用日_Click:
Exit Sub
Err_抽出採用日_Click:
MsgBox Err.Description
Resume Exit_抽出採用日_Click
End Sub
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.1
レベル13

ベストアンサー率 46% (643/1383)

stLinkCriteria = "[受験日]=" & "#" & Me![受験日] & "#"

を、
stLinkCriteria = "[受験日]=" & "#" & FORMAT$(Me![受験日],"yyyy/mm/dd") & "# AND [合否結果] = " & Me.[合否結果]
のようにするとOKだと思います。

ちなみに、[受験日]をFORMAT関数で補強してあるのは、
Accessが01/03/05のようなデータを英語読みにして、2005/01/03だと思ってしまうのを防ぐためです。

実際にやって確かめたわけではないです。不明点とかあったら補足してくださいナ。
お礼コメント
ariga

お礼率 44% (55/123)

いや~。本当にありがとうございました。構文の中の & やら # などの意味は
よくわからないのですが、ご指導いただいたとおりにやってみたら、うまくいき
ました。
ありがとうございました。
投稿日時 - 2001-05-15 17:37:24
関連するQ&A
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.2
レベル9

ベストアンサー率 37% (29/77)

 アクセスのフォームはほとんど利用したことがないので、何とも言えないんですが、参考程度で見て下さい。  通常アクセスやオラクルといった SQL 言語系のデータベースでは QUERY(クエリー) と呼ばれるモノがあります。コレは SQL 言語を登録しておく機能なんですが、このクエリーを使えば簡単に実現できると思います(更新できるかはよく分かりませんが…)。  本格的なRDBを目指すなら、まず以下のテ ...続きを読む
 アクセスのフォームはほとんど利用したことがないので、何とも言えないんですが、参考程度で見て下さい。
 通常アクセスやオラクルといった SQL 言語系のデータベースでは QUERY(クエリー) と呼ばれるモノがあります。コレは SQL 言語を登録しておく機能なんですが、このクエリーを使えば簡単に実現できると思います(更新できるかはよく分かりませんが…)。

 本格的なRDBを目指すなら、まず以下のテーブルを仮定します。

テーブル名/項目
生徒テーブル/生徒ID・生徒名
教科テーブル/教科ID・教科名
テストテーブル/テストID・テスト日付・教科ID・テスト名・合格点
テスト成績テーブル/テストID・生徒ID・点数

で、クエリーを用意します(SQL で記述しますね)
------------------------------------------------------------------
SELECT
テストテーブル.テスト日付,
テストテーブル.テスト名,
教科テーブル.教科名,
生徒テーブル.氏名,
テスト成績テーブル.成績,
IIf((([テストテーブル].[合格点])<=[テスト成績テーブル.成績]),"合格","不合格")
AS 合否
FROM
生徒テーブル INNER JOIN (
教科テーブル INNER JOIN (
テストテーブル INNER JOIN テスト成績テーブル ON
テストテーブル.テストID = テスト成績テーブル.テストID) ON
教科テーブル.教科ID = テストテーブル.教科ID)
ON 生徒テーブル.生徒ID = テスト成績テーブル.生徒ID
WHERE
(([テストテーブル.テスト日付]=[日付])) AND
([テストテーブル].[合格点]<=[テスト成績テーブル.成績])
ORDER BY
テストテーブル.テスト日付, テスト成績テーブル.成績 DESC;
------------------------------------------------------------------
 こんな感じですかね。これでクエリーを開くと最初に日付の入力を求めてきますので、欲しい日付を入力すると、その一覧が出てきます。
(データ用意する暇なかったんで、ほとんど検証してないですが(^^;)

もっと簡単にするなら…
------------------------------------------------------------------
テストテーブル:テスト名・教科名・テスト日付・生徒名・点数・合格点
クエリー
SELECT
テストテーブル.テスト名,
テストテーブル.教科名,
テストテーブル.テスト日付,
テストテーブル.生徒名,
テストテーブル.点数,
 テストテーブル.合格点
FROM
テストテーブル
WHERE
[テストテーブル.点数] >= [テストテーブル.合格点]
ORDER BY
テストテーブル.点数 DESC
------------------------------------------------------------------
これは直書きなんで自信なしですが(^^;

 データベースの基本は、データ管理と表示部を分けることです。また本来は、同じ意味を持つデータを持たないようにするのがセオリーです。その事から行くと、2番目の解は違反してますがね。
 とにかく、一度クエリーを試してみてはいかがでしょうか?


  • 回答No.3
レベル12

ベストアンサー率 45% (207/457)

クエリーだけで対応可能です。 簡単なのはクエリーを作成して条件にフォーム名![受験日]やフォーム名![合否結果]としておきましょう。 これをクエリーを開くかフォームを開くか(この時は作成したクエリーを基にしたフォームを作る)すれば問題なし。 合否結果は1か2をラジオボタン等のイベントから隠しフィールドへ格納すればよいでしょう。 クエリーが分からないのであればテーブル構成等を提示願います。
クエリーだけで対応可能です。
簡単なのはクエリーを作成して条件にフォーム名![受験日]やフォーム名![合否結果]としておきましょう。
これをクエリーを開くかフォームを開くか(この時は作成したクエリーを基にしたフォームを作る)すれば問題なし。

合否結果は1か2をラジオボタン等のイベントから隠しフィールドへ格納すればよいでしょう。

クエリーが分からないのであればテーブル構成等を提示願います。
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


新大学生・新社会人のパソコンの悩みを解決!

いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ