ついでなので、補足の分も含めて改造します。
No2はいらないものを数々残していたりしていたので
すっきりさせます。No1の検索設定ボタンクリック時のイベント、
Private Sub cmd検索設定_Click()
・
・
End Sub
は残していてもいいですが。一応、新たに設定しなおすので
削除してもかまいません。
(1)
まず、クエリを作成します。
Qメインフォーム会社名検索用
SELECT T02.顧客ID, T01.会社名, T02.売上ID, T02.日付
FROM T01 INNER JOIN T02 ON T01.顧客ID = T02.顧客ID
WHERE (((T01.会社名)=[Forms]![Fメイン]![tx会社名入力]));
Qメインフォーム日付会社名検索用
SELECT T02.顧客ID, T01.会社名, T02.売上ID, T02.日付
FROM T01 INNER JOIN T02 ON T01.顧客ID = T02.顧客ID
WHERE (((T01.会社名)=[Forms]![Fメイン]![tx会社名入力]) AND ((T02.日付)=[Forms]![Fメイン]![tx日付入力]));
Qメインフォーム日付検索用
SELECT T02.顧客ID, T01.会社名, T02.売上ID, T02.日付
FROM T01 INNER JOIN T02 ON T01.顧客ID = T02.顧客ID
WHERE (((T02.日付)=[Forms]![Fメイン]![tx日付入力]));
Q会社名検索用
SELECT T02.日付, T02.顧客ID, T01.会社名, T02.売上ID, T03.商品名, T03.単価, T03.数量, T03.合計
FROM (T02 INNER JOIN T03 ON T02.売上ID = T03.売上ID) INNER JOIN T01 ON T02.顧客ID = T01.顧客ID
WHERE (((T01.会社名)=[Forms]![Fメイン]![tx会社名入力]));
Q日付会社名検索用
SELECT T02.日付, T02.顧客ID, T01.会社名, T02.売上ID, T03.商品名, T03.単価, T03.数量, T03.合計
FROM (T02 INNER JOIN T03 ON T02.売上ID = T03.売上ID) INNER JOIN T01 ON T02.顧客ID = T01.顧客ID
WHERE (((T02.日付)=[Forms]![Fメイン]![tx日付入力]) AND ((T01.会社名)=[Forms]![Fメイン]![tx会社名入力]));
Q日付検索用
SELECT T02.日付, T02.売上ID, T03.商品名, T03.単価, T03.数量, T03.合計
FROM T02 INNER JOIN T03 ON T02.売上ID = T03.売上ID
WHERE (((T02.日付)=[Forms]![Fメイン]![tx日付入力]));
(2)
フォームにボタン一つと、テキストボックスを一つ
設定します。
cmd複合検索設定
tx会社名検索用
複合検索のボタンクリック時のイベントに、以下を設定します。
Private Sub cmd複合検索設定_Click()
If Not IsNull(Me!日付入力) And IsNull(Me!会社名入力) Then
If IsDate(Me!日付入力) Then
Me.RecordSource = "Qメインフォーム日付検索用"
Me.埋め込み0.LinkChildFields = ""
Me.埋め込み0.LinkMasterFields = ""
Me.埋め込み0.Form.RecordSource = "Q日付検索用"
Me.Requery
Else
MsgBox "日付を正しく入力してください"
Exit Sub
End If
ElseIf IsNull(Me!日付入力) And Not IsNull(Me!会社名入力) Then
Me.RecordSource = "Qメインフォーム会社名検索用"
Me.埋め込み0.LinkChildFields = ""
Me.埋め込み0.LinkMasterFields = ""
Me.埋め込み0.Form.RecordSource = "Q会社名検索用"
Me.Requery
ElseIf Not IsNull(Me!日付入力) And Not IsNull(Me!会社名入力) Then
If IsDate(Me!日付入力) Then
Me.RecordSource = "Qメインフォーム日付会社名検索用"
Me.埋め込み0.LinkChildFields = ""
Me.埋め込み0.LinkMasterFields = ""
Me.埋め込み0.Form.RecordSource = "Q日付会社名検索用"
Me.Requery
Else
MsgBox "日付を正しく入力してください"
Exit Sub
End If
End If
End Sub
以上です。使い方は、
(1) 日付入力のみデータが入っている場合は
日付で検索
(2) 会社名のみデータが入っている場合は
会社名で検索
(3)日付入力、会社名入力の両方にデータが入っている場合は
日付と会社名で検索
お礼
こちらでもきちんとできました!! ありがとうございました。