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

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

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

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

Q&A

解決済

1回答

3277閲覧

accessのサブフォームについて

ataru2222

総合スコア272

Access

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

0グッド

0クリップ

投稿2021/10/18 12:14

前提・実現したいこと

accessのフォームを開いた時にサブフォームを空の状態で表示

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

現在サブフォームにテーブルを設定したのですが、openメソッドにてフォームを開いた瞬間に
サブフォームにテーブル全件を読み込んでしまいます。

検索ボタンを押した時のみ動的にSQLから取得するようにしたいです。

該当のソースコード

イメージ説明

画面イメージはこんな感じで、フォームを開いた瞬間にこちらのデータをセットしてしまいます。

いちおボタンを押した時の処理がこちら

Private Sub コマンド0_Click() Dim strSQL As String strSQL = "SELECT * FROM kjData WHERE busho = 1" Me.kjDataのサブフォーム1.Form.RecordSource = strSQL End Sub

試したこと

form_Loadメソッドにこちらの値を設定しましたがうまくいかず。

Private Sub Form_Load() Me.kjDataのサブフォーム1.Enabled = False End Sub

nullや""、hidden等を入れれないか試したのですが、うまくいきませんでした。

こちらについて詳しい方いらっしゃいましたら、ご教授ください。
よろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

サブフォームのデザインビューで「レコードソース」プロパティにテーブル名「kjData 」を設定しておきます。
「フィルター」プロパティは「False」を設定しておきます。
「読み込み時にフィルターを適用」プロパティを「はい」に設定します。

以上で、サブフォームを開いたときにレコードは0件になります。

通常はVBAからRecordSourceにSQLを設定することはしません。

抽出したいときは、Filterプロパティに抽出条件を設定します。提示のコードなら下記になります。

vba

1Private Sub コマンド0_Click() 2 Me.kjDataのサブフォーム1.Form.Filter = "busho = 1" 3 Me.kjDataのサブフォーム1.Form.FilterOn = True 'フィルターを適用 4End Sub

投稿2021/10/18 12:44

hatena19

総合スコア34075

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

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

ataru2222

2021/10/18 13:07

回答していただきありがとうございます。 >サブフォームのデザインビューで「レコードソース」プロパティにテーブル名「kjData 」を設定しておきます。 「フィルター」プロパティは「False」を設定しておきます。 「読み込み時にフィルターを適用」プロパティを「はい」に設定します。 以上で、サブフォームを開いたときにレコードは0件になります。 →こちらを試したのですが、なぜか表示されてしまいました。 今回ボタンのみと書きましたが、実はテキストボックスを絡めた抽出を考えております。 アクセスのプロパティシートを使ったこのような仕様が嫌いなのと別の方が改修がする可能性のことを考えると、できればVBAを使ってSQLでやってしまいたいのですが出来ないでしょうか? よろしくお願いいたいます。
hatena19

2021/10/18 14:01

Accessのサンプルコードを検索してみれば分かりますが、Filterプロパティを使うのが普通です。 普通に入門書やスクールなどでもそのような教え方が普通だと思います。 他の方が改修することも考えるなら一般的な方法を使うべきだと私は思います。 ちなみに、Filterプロパティに設定する条件式は、SQLのWHERE句とまったく同じものになります。 自分の考え方を変える気がないということなら、下記のようにすればいいでしょう。 サブフォームの読み込み時に Private Sub Form_Load()   Me.RecordSource = "SELECT * FROM kjData WHERE False;" End Sub
ataru2222

2021/10/20 11:12

詳しく教えてくださり、ありがとうございました。 まだまだAccessに慣れていないので、苦労しておりますがFilterプロパティも扱えるよう精進していきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問