Access (一般機能)

Accessの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Home Premium : Access 2013)
列見出しのみ縦書きにしたい
投稿日時: 18/05/29 17:57:58
投稿者: mmiwa

教えてください
 
クロス集計結果をレポートとしてプリントアウトしています
 
紙の節約を目的として
列見出しのみ縦書きにしたいと考えています
 
どなたか列見出しのみ縦書きにする方法を教えてください
可能であればコードによる設定方法だと助かります

回答
投稿日時: 18/05/29 18:04:19
投稿者: sk

引用:
クロス集計結果をレポートとしてプリントアウトしています
  
紙の節約を目的として
列見出しのみ縦書きにしたいと考えています

ここでの「列見出し」が、レポートのページヘッダーセクション辺りに
配置されている 1 つ以上のラベルコントロールのことを指しているのであれば、
それぞれのラベルの[縦書き]プロパティを「はい」に設定なさればよろしいのでは。

回答
投稿日時: 18/05/29 18:19:03
投稿者: sk

追記:

引用:
可能であればコードによる設定方法だと助かります

レポートモジュールのコードで設定される場合は、
ラベルが配置されているセクションの Format イベントの発生時に
そのラベルの Vertical プロパティを True に設定するように
なさればよろしいでしょう。

投稿日時: 18/05/31 18:01:17
投稿者: mmiwa

sk 様
 
ありがとうございました
 
1.出張していたのでmougにログインできず
返信が遅くなったことをお詫びいたします
何故かau回線を利用しているとログインできないのです
申し訳ありません
 
2.アドバイスありがとうございました
アドバイスをもとに作業をしようとしたところで
自分の記憶が大きく間違っていたことに気付きました
自分で作成したコードにもかかわらず
「クロス集計結果をレポートとしてプリントアウトして」いると思い込んでいたのですが
実は「クロス集計結果そのものをプリントアウトして」いました
そのため書式設定をすることが出来なかったようです
 
/***************************/
コード内容
 
Dim myDB As Database
Dim myQ As QueryDef
Dim mySQL As String
 
Set myDB = CurrentDb
Set myQ = myDB.QueryDefs("集計")
 
mySQL = "TRANSFORM count([AAA].[受注日]) " & _
"SELECT [商品名]…" & _
"WHERE [得意先] = **** " & _
"GROUP BY [商品名]…" & _
"PIVOT [AAA].[受注日];"
 
myQ.SQL = mySQL
myQ.Close
Set myQ = Nothing
 
DoCmd.OpenQuery "集計", acViewPreview
 
/***************************/
 
3.特定のクロス集計クエリの結果をレポートにしてみました
縦書きプロパティを設定することで列見出しを縦書きにすることが出来ました
ありがとうございました
 
4.しかし、本来の目的である
変数の受け渡しによって列見出しの項目名・項目数が増減する集計結果の列見出しを
レポート上で自動的に縦書きにする方法を見出すところまでには至っておりません
 
もし可能であれば上記コードをもとに
列見出しを縦書きにしたレポート出力(このSQLの場合ですと、受注日を縦書きにする)方法を
教えて頂けないでしょうか
 

回答
投稿日時: 18/06/01 10:53:04
投稿者: sk

引用:
4.しかし、本来の目的である
変数の受け渡しによって列見出しの項目名・項目数が増減する集計結果の列見出しを
レポート上で自動的に縦書きにする方法を見出すところまでには至っておりません

それはどこまでの範囲を自動化するか次第。
 
・作成済みのレポートに対して何らかの設定を行なう処理を実行するのか、
 それとも新規レポートを 1 から動的に生成するような処理を実行するのか。
 
・ページヘッダーセクション上に出力する列見出しを
 どのような形で表現するのか。
 (ラベルコントロールを用いるのか、テキストボックスを用いるのか等)
 
・詳細セクション上に出力する集計フィールドの値、
 あるいはコントロールソースをどのような形で制御するのか。
 (あるいは制御しなくてよい方法を採るのか)
 
・レポートに出力する列見出し/集計フィールドの個数を
 最大何個までとするか。
 (クエリ/レポートの仕様や用紙サイズといった制限が
 ある以上、無制限に増やせるわけではないし、また
 現実的ではない)
 
そもそもの問題として、レポートのレコードソースを
「列見出しが可変であるクロス集計クエリ」とすること自体が、
Access のレポートに求められている標準的なデザイン、
つまり定型書式の文書作成に即していません。
 
引用:
mySQL = "TRANSFORM count([AAA].[受注日]) " & _
"SELECT [商品名]…" & _
"WHERE [得意先] = **** " & _
"GROUP BY [商品名]…" & _
"PIVOT [AAA].[受注日];"

例えば、[受注日]の値をそのまま列見出しとするのではなく、
「[受注日]の値を何らかの相対値に変換した結果」を
列見出しとし、更に IN 句を加えて列見出しを固定した
クロス集計クエリを作成した上、以下の事例のように
「列見出しとして出力するテキスト」をレポート側で
制御/計算するという方式を採ることが考えられます。
 
Access(一般機能)掲示板 より:
http://www.moug.net/faq/viewtopic.php?t=77152

投稿日時: 18/06/01 16:29:44
投稿者: mmiwa

sk様
 
ありがとうございました
 
『「列見出しが可変であるクロス集計クエリ」とすること自体が、
Access のレポートに求められている標準的なデザイン、
つまり定型書式の文書作成に即していない』
 
『「[受注日]の値を何らかの相対値に変換した結果」を
列見出しとし、更に IN 句を加えて列見出しを固定した
クロス集計クエリを作成した上、以下の事例のように
「列見出しとして出力するテキスト」をレポート側で
制御/計算するという方式を採る』
 
なるほど、非常によく分かりました
(すぐにコードが組めるか否かは別として)
 
考えを改めてチャレンジしてみます
壁にぶつかったときには、またご指導ください
 
ありがとうございました