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

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

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

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

Access

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

1回答

4972閲覧

Access 帳票フォームのレコードソース

access

総合スコア9

VBA

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

Access

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2020/07/20 10:53

Accessの帳票フォームについて質問です。

非連結のフォーム(フォームのプロパティ - 書式 - 既定のビュー は "帳票フォーム"に設定)
があります。
これのプロパティ - レコードソースを、同じDBのT_資格一覧(資格の一覧が格納されているテーブル)に設定すると、以下のような感じになります。
(綺麗な一覧になっています。)

イメージ説明

ところが、レコードソース を別のDBのT_資格一覧(上記のT_資格管理と中身は全く同じ)から
DAOレコードセットとして設定すると、以下のように1行ずつの表示になってしまいます。

イメージ説明

データの中身としては同じ結果ではありますが、後者ではあまりに見栄えが悪いです。
どこかの設定で前者のように綺麗な一覧にはならないのでしょうか。

ちなみに、DAOレコードセッットとして設定したコードは以下の通りです。

Private Sub Form_Load()

Dim strSQL As String
'データソースをセット
strSQL = "select 資格コード , 資格名 from T_資格一覧 ;"
Set Me.Recordset = db.OpenRecordset(strSQL)   '変数dbは外部DBと接続してます

End Sub

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

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

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

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

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

sousuke

2020/07/20 11:08

フォームヘッダーの色が違うので画面が同じように見えないのですが 『非連結のフォーム(フォームのプロパティ - 書式 - 既定のビュー は "帳票フォーム"に設定)』 になっているのでしょうか?ヘッダーの色が違う理由を説明するか、もう一度取り直して 画面を合わせたほうがいいと思います。
hatena19

2020/07/20 11:13

制限の多い「Recordsetプロパティレコードセットを設定する方法」を採用する理由,目的を説明してください。
access

2020/07/20 11:22

ありがとうございます。 テーマの色が違うのでフォームヘッダーの色に違いがあります。 >>制限の多い「Recordsetプロパティレコードセットを設定する方法」を採用する理由,目的を説明してください。 ありがとうございます。 本DBはフロントとバックに分けてフロントファイルを利用者に配布する予定です。 フロントとバックをリンクテーブルで繋げてしまうと、何かしらの方法でフロントからテーブルの中身が見えてしまう恐れがある為、DAOレコードセットを使用してます。
hatena19

2020/07/20 12:46 編集

db変数が外部接続したデータベースということですね。 それなら、レコードソースプロパティにIN句で外部データベースに接続するSQLを設定したほうが制約が少ないと思います。 Recordsetプロパティにレコードセットをセットする方法だとFilterプロパティやOrdrbyプロパティが使えなかったり、メインサブフォーム形式でリンクフィールドが使えないという制約があります。
access

2020/07/20 12:49

ご回答有難うございます。 >>Recordsetプロパティにレコードセットをセットする方法だとFilterプロパティやOrdrbyプロパティが使えなかったり、メインサブフォーム形式でリンクフィールドが使えないという制約があります。 そうなのですね。制約については知りませんでした。 >>1行しか表示されないのは、sousukeさんも指摘されているように帳票フォームになっていないからではないかと思われます。 全件出力はされている(画像右の上下スクロールで移動できる)のですが、1行分の高さしか表示されないのがどうしてかなぁと・・・帳票フォームになっていることは間違いないです。 境界線スタイルをサイズ調整可にしてウィンドウを上下に延ばすと1つ目の画像のように綺麗になるのですが、一度フォームを閉じるとまた1行分の高さしか表示されないのです。 プロパティに「幅」はあるんですが、なぜか「高さ」がないのですね・・
access

2020/07/20 12:59

追記です。 DoCmd.MoveSize でフォームの高さや位置を指定することによりある程度綺麗に表示ができました。 お騒がせいたしました。ご回答有難うございました。
guest

回答1

0

ベストアンサー

縦スクロールバーが表示されているので、帳票フォームですが、ウィンドウの高さが1行分になってますね。
なぜかというと、フォームを開いた直後は非連結なので1行分しか表示されないので、それを基準にフォームの高さが決まります。
「レコードソース」プロパティを設定しておけばそうならないので、IN句のSQLをレコードソースに設定すればいいでしょう。

「Recordsetプロパティにレコードセットを設定する方法」でいくなら、読み込み時にフォームの高さを設定すればいいでしょう。

vba

1Private Sub Form_Load() 2 'フォームを10行分の高さに設定 3 Me.InsideHeight = Me.フォームフッター.Height + Me.詳細.Height * 10 4 5 Dim strSQL As String 6 'データソースをセット 7 strSQL = "select 資格コード , 資格名 from T_資格一覧 ;" 8 Set Me.Recordset = db.OpenRecordset(strSQL)  9 10End Sub

「Recordsetプロパティにレコードセットを設定する方法」はFilterプロパティやOrdrbyプロパティが使えないという制約があります。

Recordset プロパティ (Access) | Microsoft Docs

投稿2020/07/20 13:12

編集2020/07/20 13:14
hatena19

総合スコア33715

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

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

access

2020/07/20 13:16

とても良く分かりました 有難うございます。 一応レコードセットでやってみて、制約が気になってきたら教えて頂いたin句で記述してみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問