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

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

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

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

Access

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

Q&A

解決済

2回答

7586閲覧

Accessにて検索結果をサブフォームに表示する方法がわかりません。

kozica

総合スコア58

VBA

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

Access

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

0グッド

1クリップ

投稿2019/08/28 07:29

編集2019/08/28 07:31

テーブルの情報をフォーム内で検索して結果をサブフォームに表示させたいのですが、
検索ボタンとサブフォームをどう設定し連携させれば良いかわかりません。

Accessはまだ2日ほどしか触ったことありません。

年齢、住まい、名前、性別をフォームで準備し検索をかけることまではできました(分割フォームにて確認済み)
ただ、分割フォームで作成すると上に表示されておりそこで編集も出来てしまうので
別の方法はないか探してます。また、検索結果のレコードも編集ができないようにしたいです。

単純にテーブルから検索して表示するフォームを作成したいです。
編集はできないように。

色々サイト見ましたが、どれもわかりずらく理解できませんでした。

テキストボックスと検索ボタンの連携させるコードは下記の通りしています。

vba

1Private Sub 検索ボタン_Click() 2 Dim age As String 3 Dim address As String 4 Dim name As String 5 Dim sex As String 6 Dim WhereString As String 7 8 age = Nz(ValueAge) 9 address = Nz(ValueAddress) 10 name = Nz(ValueName) 11 sex = Nz(ValueSex) 12 13 If age <> "" Then 14 If WhereString <> "" Then WhereString = WhereString & " AND " 15 WhereString = WhereString & "(年齢 like '*" & age & "*')" 16 End If 17 18 If address <> "" Then 19 If WhereString <> "" Then WhereString = WhereString & " AND " 20 WhereString = WhereString & "(住まい like '*" & address & "*')" 21 End If 22 23 If name <> "" Then 24 If WhereString <> "" Then WhereString = WhereString & " AND " 25 WhereString = WhereString & "(年齢 like '*" & name & "*')" 26 End If 27 28 If sex <> "" Then 29 If WhereString <> "" Then WhereString = WhereString & " AND " 30 WhereString = WhereString & "(年齢 like '*" & sex & "*')" 31 End If 32 33 Me.Filter = WhereString 34 Me.FilterOn = True 35 36End Sub

イメージは下記のような感じです。
イメージ説明

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

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

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

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

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

guest

回答2

0

ベストアンサー

メイン/サブフォーム形式は、用途が異なるものなので(一対多関係のデータ用)、使わない方がいいでしょう。レイアウトの自由度が高いので、あえて本来の用途以外で使うこともありますが、それはある程度スキルがついてからの方がいいでしょう。Accessをさわって2日でやることではありません。

まず、抽出対象のテーブルを選択した状態で、リボンの[作成]-[フォームウィザード]をクリックして、ウィザードでフォームを作成します。フォームのレイアウトで「表形式」を選択すると、希望のレイアウトになります。表レイアウトの帳票フォームになります。
「作成」→「その他のフォーム」→「複数のアイテム」でもいいでしょう。

デザインビューでフォームヘッダー部分の高さを広げて、そこに検索値入力用のテキストボックスを配置します。

あとは、提示のコードの感じで動作すると思います。
もう少し効率的な記述はありますが。

コード例

仕様
各テキストボックスの名前をtxt年齢、txt住まい、txt名前、txt性別 とします。
「年齢」フィールドは数値型、他はテキスト型とします。
年齢と性別は完全一致、住まいと名前は部分一致とします。

vba

1Private Sub 検索ボタン_Click() 2 Dim WhereString As String 3 If Me.txt年齢 >= 0 Then 4 WhereString = WhereString & " AND 年齢 = " & Me.txt年齢 5 End If 6 7 If Me.txt住まい <> "" Then 8 WhereString = WhereString & " AND 住まい like '*" & Me.txt住まい & "*'" 9 End If 10 11 If Me.txt名前 <> "" Then 12 WhereString = WhereString & " AND 名前 like '*" & Me.txt名前 & "*'" 13 End If 14 15 If Me.txt接別 <> "" Then 16 WhereString = WhereString & " AND 性別 = '" & Me.性別 & "'" 17 End If 18 19 Me.Filter = Mid(WhereString, 6) 20 Me.FilterOn = (WhereString <> "") 21End Sub

投稿2019/08/28 11:42

編集2019/08/28 12:06
hatena19

総合スコア33715

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

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

kozica

2019/08/29 02:30

できました!! 非常に丁寧な説明ありがとうございます! また、あいまい検索じゃなくていい所も修正してくださり本当に感謝しております!
guest

0

サブフォームで行うなら、リンク[親/子]フィールドで検索用の項目とデータを結び付けて下さい。

だけど、サブフォームは使用せずに、帳票フォームでフィルター指定するだけの方が簡単です。

投稿2019/08/28 08:02

sazi

総合スコア25195

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

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

kozica

2019/08/28 08:27

結びつけようとすると非連結で出来ませんでした 帳票フォームにするとレコードのような表示形式ならず検索結果が多いとスクロールが大変になってしまいます。 レコードのように表示させることは可能なのでしょうか? 2日ほどしかaccess触ってないため初歩的な質問ですいません。
sazi

2019/08/28 08:39 編集

レコードのようにするのが「帳票フォーム」ですよ。 フォームのプロパティで「既定のビュー」が「単票フォーム」になっていませんか?
kozica

2019/08/28 09:11 編集

帳票フォームにすると2列構成になり1列目がフィールド、2列目が値になりました、、、 レコードのように1行目にフィールドで、2行目から値が入っていくような表示形式にしたいです。
kozica

2019/08/28 09:15

テーブルを選択した状態で「作成」→「その他のフォーム」→「複数のアイテム」でおそらく帳票フォーム作成できました。 ここから、テキストボックスと検索ボタンを作成し、帳票フォームを検索と結びつけるにはどうすればう良いでしょうか?
sazi

2019/08/28 10:05

フォームウイザードで帳票フォーム作ってみると良いかと思います。 検索条件の結び付けはフィルターを使用します。 質問の内容がフィルターを使用した内容になっていますね。
kozica

2019/08/29 02:31

質問内容外までお聞きして申し訳ありません、、、 お付き合い頂きありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問