【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言

はじめまして。
MS ACCESSわからないことがあるので、皆さんのお知恵をお借りしたく投稿しました。

今タイムカードを作っています。
テーブル
T-社員マスター
ID
名前
T-勤怠データ
社員ID
日付
出勤時間
退勤時間

クエリ
Q-管理&編集
T-勤怠データ 社員ID
T-社員マスター 名前
T-勤怠データ 日付
T-勤怠データ 出勤時間
T-勤怠データ 退勤時間
年 Year([日付])
月 month([日付])

このような感じであり、一覧で見るためのフォームを
非連結テキストボックス 名前 年 月 で作り抽出を行っているのですが
名前・年・月のすべて入力すれば抽出されるのですが、どれか一つでも、条件を入力していなければ何も表示がされないため、これをどれか一つだけ入力した場合は、それに合うデータだけ表示できるように抽出文を書きたいのですが、どのようにすれば抽出できるのかわかりません。

教えていただけると非常に助かります。
よろしくお願いします。

A 回答 (4件)

SQL:


SELECT [T-勤怠データ].社員ID, [T-社員マスター].名前, [T-勤怠データ].日付, [T-勤怠データ].出勤時間, [T-勤怠データ].退勤時間
FROM [T-勤怠データ] LEFT JOIN [T-社員マスター] ON [T-勤怠データ].社員ID = [T-社員マスター].ID
WHERE ((([Forms]![管理&編集用フォーム]![社員名検索]) Is Null Or ([Forms]![管理&編集用フォーム]![社員名検索])=[社員ID]) AND (([Forms]![管理&編集用フォーム]![年検索]) Is Null Or ([Forms]![管理&編集用フォーム]![年検索])=Year([日付])) AND (([Forms]![管理&編集用フォーム]![月検索]) Is Null Or ([Forms]![管理&編集用フォーム]![月検索])=Month([日付])));

VBA:
Option Compare Database
Option Explicit

Private Sub 月検索_AfterUpdate()
Me.Requery
End Sub

Private Sub 社員名検索_AfterUpdate()
Me.Requery
End Sub

Private Sub 年検索_AfterUpdate()
Me.Requery
End Sub

です。
    • good
    • 0
この回答へのお礼

何度も、ありがとうございました。
何とか動かすことができました。

お礼日時:2020/01/25 09:22

テーブル名のハイフンはまずいでしょ。


あとあと苦労するから
可能なら、アンダーバーに変更。
不可能なら、SQLのテーブル名部分を [] でくくること。

[T-勤怠データ].[日付]
のように。
    • good
    • 1

No.1 です。


フォーム の所は、実際のフォーム名に置き換えてください。
    • good
    • 1
この回答へのお礼

返信ありがとうございます。
フォーム名置き換えも行ってみたのですが、すべての検索ボックスを無記入にした場合、すべてデータが表示され、どれかに入力すると全くデータが検索されず、3つとも入れると狙った結果を出力してくれます。

フォームのボックス名は
社員名検索・・・これは名前ではなくIDで検索しています。
年検索
月検索

なんども、申し訳ないのですが、おかしなところがあれば、教えて頂けると幸いです。

一応WHERE以降は下記のとおりです。

WHERE ((([Forms]![管理&編集用フォーム]![社員名検索]) Is Null Or ([Forms]![管理&編集用フォーム]![社員名検索])=[T-社員マスター].[社員ID]) AND (([Forms]![管理&編集用フォーム]![年検索]) Is Null Or ([Forms]![管理&編集用フォーム]![年検索])=Year([T-勤怠].[日付])) AND (([Forms]![管理&編集用フォーム]![月検索]) Is Null Or ([Forms]![管理&編集用フォーム]![月検索])=Month([T-勤怠].[日付])));

お礼日時:2020/01/24 14:20

Q-管理&編集:


SELECT T-勤怠データ.社員ID
, T-社員マスター.名前
, T-勤怠データ.日付
, T-勤怠データ.出勤時間
, T-勤怠データ.退勤時間
WHERE (Forms!フォーム!名前.Value IS NULL OR Forms!フォーム!名前.Value=T-社員マスター.名前)
AND (Forms!フォーム!年.Value IS NULL OR Forms!フォーム!年.Value=Year(T-勤怠データ.[日付]))
AND (Forms!フォーム!月.Value IS NULL OR Forms!フォーム!月.Value=Month(T-勤怠データ.[日付]))

みたいな感じ。
試してないけど。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。
SQLに入れてみたんですが、僕の理解が悪いのかとうまく動きません。
もう少し色々いじってみたいと思います。

お礼日時:2020/01/24 07:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!