MS Access Tips/Sample and VBA and Blog customize etc...

レコードを横に展開する

データベースのテーブルでは、項目名(フィールド)は横に並び、その下にデータ(レコード)が縦に展開していきます。

ウィザードを使って表形式のレポートを使っても当然そうなります。

しかし、場合によっては、項目名を縦に配置して、データを横に展開していくレイアウトにしたい場合があります。


方法としては、ペンション萩さんのサイトの下記で紹介されている横向きフォントで縦書きにするという方法があります。

縦のものを横にする

この方法は、VBAも必要なくてシンプルでいいのですが、しかし、プレビューをちゃんと見ようとするとちょっと首が疲れるかもしれません。

今回はVBAを使って、首を横に倒さなくてもいい方法を紹介します。

難易度:

原理としては、MoveLayout = False で印字位置を移動せずに、テキストボックスを右に移動させて表示してます。

詳細セクションの左に項目名のラベルを縦に配置します。
データを表示するテキストボックス名をその横に配置します。
名前は、商品コード、フリガナ、商品名、仕入先
と仮定します。

さらに、詳細セクションにテキストボックスを配置して、下記のように設定します。

プロパティ設定値
コントロールソース  =1 
集計実行  グループ全体 
名前  連番 
可視  いいえ 

レポートモジュールのコード例


コントロールをグループ化して操作する で紹介したコレクションを使って For Each でまとめてテキストボックスを移動させてます。

注意点: レポートの幅は、項目幅、列数、列間隔を考慮してそれらが収まる幅にしてください。例えば、上記のコードの場合、項目幅2cm, 列間隔5.5cm, 列数4なので、2+(5.5*4)=24より 24cm以上にする必要があります。
Access2007以降の場合は、詳細セクションの「代替の背景色」を「色なし」にしてください。

補足: 項目名の列幅とデータ部分の列幅が同じ場合は、下記の方法が簡単です。

グループヘッダーに項目名のラベルを縦に配置して、フィールドのテキストボックスは詳細に縦に配置します。グループヘッダーの「セクション繰り返し」を「はい」にします。[ページ設定]-[レイアウト]で「列数」を1ページに表示できる列数に設定します。


サンプルMDBが下記からダウンロードできます。

サンプルファイルが下記からダウンロードできます。
RptHorizontalSpread_07.zip (Access 2007-2010 形式 - 42kb)
RptHorizontalSpread.zip (Access 2002-2003 形式 - 39kb)
RptHorizontalSpread_2k.zip (Access 2000 形式 - 37kb)

拍手する

3 Comments

超ビギナー says..."レコードを横に展開"

いつも参考にさせていただいております。
レコードを横に展開する、は非常に感動しました!
これをもとにレポートを作成したのですが1枚目はうまく表示&印刷できたのですが、2枚目以降が表示されません。
ちなみにグループ化はしていません。
もとになるテーブル&クエリの作り方が問題なのでしょうか?

2011.09.24 21:57 | URL | #- [edit]
hatena says..."Re: レコードを横に展開"

返事が遅くなってすみません。

うーん、それだけの情報では、何が原因かはちょっと推測しかねます。

よろしかったら、下記の掲示板で、もう少し詳細な情報を提示して質問してください。

文だけでは説明しにくい場合は、ファイルをアップロードも出来ますので。

http://hatena-access.progoo.com/bbs/

2011.10.01 01:08 | URL | #5uE6dEgY [edit]
超ビギナー says..."Re: レコードを横に展開"

お返事、ありがとうございました。
実は、レポートのペ-ジ設定で列数の設定を間違って設定していたのが原因でした。(~=~;
いろいろとアドバイスありがとうございました。

2011.10.03 21:25 | URL | #- [edit]

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/32-53567ea5
該当の記事は見つかりませんでした。