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

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

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

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

Q&A

解決済

1回答

381閲覧

accessにおいて、vbaの値をメインフォームに出力したい

syosinsya109

総合スコア41

Access

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

0グッド

0クリップ

投稿2022/10/05 11:41

前提

accessのvbaについて質問します。
vbaを操作して、sqlを動かし、テーブルのデータを取得するところまではできました。しかしそこからメインフォームに表形式で出力することができません

実現したいこと

vbaで取得したデータをメインフォームに表形式で出力したい

該当のソースコード

access

1Option Compare Database 2Private Sub 検索_btn_Click() 3'変数宣言 4Dim db As DAO.Database 5Dim rs As DAO.Recordset 6 7'現在開いているデータベースに接続する。 8Set db = CurrentDb 9Dim i As Integer 10 11'SQL文でT_商品を開くためのレコードセットを作成する。 12Set rs = db.OpenRecordset("SELECT * FROM sample", dbOpenDynaset) 13 14'先頭レコードに移動する。 15rs.MoveFirst 16 17i = 1 18'ループにより順番にレコードの値を表示する。 19Do Until rs.EOF = True 20 'Me!sample = Me!sample & rs!馬名 21 Debug.Print i & ": " & rs!馬名 22 rs.MoveNext 23 24 i = i + 1 25Loop 26 27'レコードセットを閉じる。 28rs.Close 29Set rs = Nothing 30 31'データベースの接続を閉じる。 32db.Close 33Set db = Nothing 34End Sub 35

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

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

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

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

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

guest

回答1

0

ベストアンサー

質問のコードはVBAでデータ操作をするためのものです。
フォームに表示させてユーザーに操作させるという用途には使えません。

テーブルデータを表形式で表示するフォームは、フォームウイザードで簡単に作成できます。
一からデザインビューで作成する方法もありますが(なれればこちらの方が自分の思い通りのものを作成できます。)、
最初はウィザードで作成してどのようなものか理解することから始めるのがいいでしょう。

ウィザードでの作成法は下記を参照してください。
表形式フォーム作成

投稿2022/10/05 13:08

hatena19

総合スコア33715

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

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

qyx1234

2022/10/05 13:56

回答ありがとうございます。 フォームでボタンを設置し、押したら表示するデータを切り替えたいです。例えば、並び替えのコンボボックスを選択した状態で検索ボタンを押したら出力できるみたいに。 そのためにvbaを操作して出力できるデータを切り替えなければいけません。 ファームウィザードでは、テーブルは出力できるのですが、ボタンを配置してボタンに応じたデータを切り替えることはできません。 Debug.PrintやMsgBoxみたいにメインフォームにも出力したいです
hatena19

2022/10/05 14:16 編集

フォームの、Filterプロパティ、OrderByプロパティを設定することによって、データの抽出(切り替え)、並べ替えが簡単にできます。 ウィザードで作成した帳票フォームのヘッダーにコンボボックスや検索ボタンを配置して、その更新後処理やクリック時のイベントにVBA(あるいはマクロ)を設定すれば可能です。 Accessフォームでフィルターを使って特定のレコードのみ表示する方法 https://access-skill.com/form-filter/ ■T'sWare Access Tips #315 ~レコードの並べ替え(Sortプロパティ)~ https://tsware.jp/tips/tips_315.htm
qyx1234

2022/10/05 14:53

クリックイベントを押された時に、コンボボックスの値やテキストボックスの値をvbaでFilterプロパティ、OrderByプロパティに出力するって事でしょうか。 だとしたらどのようにvbaを書けばいいのでしょうか
hatena19

2022/10/05 15:07

上記のリンク先にサンプルコードがあります。 抽出する場合は、 Me.Filter = "抽出条件" 'SQLのWHERE句の式と同じ Me.FilterOn = True 並べ替えの場合 Me.OrderBy = "式" 'SQLのODER BY句の式と同じ Me.OrderByOn = TrueOn = True
qyx1234

2022/10/06 00:02

ありがとうございます。 最後にもう一ついいでしょうか。 質問には書いていなかったのですが、上記のURLだとorderbyやwhere専用な気がします。 groupbyや結合といったsqlを使いたい時はどの値を変更したらいいでしょうか
hatena19

2022/10/06 00:27

フォームウィザードで作成するときに、クエリを元に作成することも可能です。そこで、結合やgroupbyを設定するのが通常の設計です。テーブルの正規化ができているならそれで足りるはずです。 そうでない場合、フォームのレコードソースプロパティにSQLを直接設定することも可能です。
qyx1234

2022/10/06 00:41

vbaで制御しなければいけませんが、どのように書けばいいのでしょうか
hatena19

2022/10/06 00:49

どうしても必要なら、上でも書きましたが、VBAでフォームのレコードソースにSQLを設定すればいいでしょう。 ただ、フォームの機能について充分理解できていない印象ですので、まずは入門書か入門サイトで基本を学習するほうが結局早道だと思います。 その上でいろいろ分からない点があったら、新規に質問をたてて、何をしたいのか具体的に提示して質問してください。
syosinsya109

2022/10/06 07:29

ありがとうございます。 access始めた初心者なのでなれなくて沢山質問してしまうかもですがその時はよろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問