質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

1回答

1022閲覧

クエリを元にした検索フォームについて

yazu-0809

総合スコア6

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2021/04/23 14:17

前提・実現したいこと

先日、Accessで検索フォームについて質問させていただきました。
今回はテーブルを元にクエリを作成し、そこに1つ新しく作った分類テーブルを追加で表示できるようにし、
クエリで表示しています。
そのクエリを元に前回と同じように、検索する項目は変わらない内容で検索できるようフォームを作成しました。

発生している問題・エラーメッセージ

クエリを元にフォームを作成すると、1回目はちゃんと抽出してくれましたが、保存して、別のフォーム条件を入力すると
検索できなくなります。
例:1回目 開始年月度 2020/03 終了年月度 2020/04では抽出されて表示される。
保存して2回目の検索をした時 開始年月度2019/03 終了年月度 2019/04では表示されない。
フォーム上で見えている表形式のクエリを見ると2020/03~2020/04のデータが表示されている。

別にクエリを作成 1回目 開始年月度 2019/03 終了年月度 2019/04 では問題なし。
保存して2回目の検索をした時 開始年月度2020/03 終了年月度 2020/04では 表示されない。
フォーム上で見えている表形式のクエリを見ると2019/03~2019/04のデータが表示されている。

該当のソースコード

VBA

1Private Sub 検索_Click() 2 3Dim strFilter As String 4 5 6 7 If Not IsNull(Me.開始年月度) And Not IsNull(Me.終了年月度) Then 8strFilter = strFilter & " AND 年月度 >= '" & Me.開始年月度 & "' AND 年月度 <= '" & Me.終了年月度 & "'" 9ElseIf Not IsNull(Me.開始年月度) Then 10strFilter = strFilter & " AND 年月度 = '" & Me.開始年月度 & "'" 11End If 12 13 14 15 If Not IsNull(Me.tx請求先名) Then 16 strFilter = strFilter & " AND 請求先名 Like '*" & Me.tx請求先名 & "*'" 17 End If 18 19 If Not IsNull(Me.得意先名) Then 20 strFilter = strFilter & " AND 得意先名1 Like '*" & Me.得意先名 & "*'" 21 End If 22 23 If Not IsNull(Me.商品コード開始) And Not IsNull(Me.商品コード終了) Then 24strFilter = strFilter & " AND 商品コード >= '" & Me.商品コード開始 & "' AND 商品コード <= '" & Me.商品コード終了 & "'" 25ElseIf Not IsNull(Me.商品コード開始) Then 26strFilter = strFilter & " AND 商品コード = '" & Me.商品コード開始 & "'" 27End If 28 29 If Not IsNull(Me.tx商品名) Then 30 strFilter = strFilter & " AND 商品名 Like '*" & Me.tx商品名 & "*'" 31 End If 32 33 If Not IsNull(Me.tx担当者名) Then 34 strFilter = strFilter & " AND 担当者名 Like '*" & Me.tx担当者名 & "*'" 35 End If 36 37 38 Me.Filter = Mid(strFilter, 6) 39 If strFilter = "" Then 40 Me.FilterOn = False 41 Else 42 Me.FilterOn = True 43 End If 44End Sub 45

試したこと

該当するクエリでは全件表示されている。またクエリ上ではBetweenを使って検索出来ているが、フォームになると
うまくいかないので

解除マクロ
Me.Requery
を作成。ただし抽出がリセットされない。

もう1つ検索条件をリセットする

Dim clear As Control
On Error Resume Next
For Each clear In Me.Controls
With clear
If .ControlType = acTextBox Then
.Value = ""
End If
End With
Next clear

でもリセットできず・・・

どうしたらよいでしょうか?
問題点は一度フォーム上で抽出した内容をクエリで覚えてしまっていると考えています。
全件を表示する方法はあるのでしょうか。調べても出てきませんでした。

また別件ですが、Accessでインポート操作の記録をしたマクロを作って、トップ画面にボタンで登録していますが、
この実行履歴をトップ画面で作成したフォームの中に表示することはできますでしょうか?
FileDateTime関数を使うのかなと思いましたが、これだとファイルを指定することになるので・
ただのマクロの実行日時記録はどう表示するのかなと思いました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

Private Sub 開始年月度_AfterUpdate()
Me.Undo
End Sub
Private Sub 終了年月度_AfterUpdate()
Me.Undo
End Sub

で解決しました。

投稿2021/05/04 03:41

yazu-0809

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問