Microsoft Access 掲示板

印刷用レポートのフィールド高について

2 コメント
views
4 フォロー

印刷用のレポートのレコードの表示方法について質問です

ある程度の高さをもたせて上下中央(あたり)になるようにフィールドを配置しています
文字列が長い場合にのみ二段表示にしたいのですがうまくできません
二段になるようにフィールドを高くしておくと上下中央に配置できませんし
文字列がフィールドに入りきれないときに拡張表示にしていると、行ごとに高さが変わってしまいます
対処方法を教えてください

このようにしたいということです
画像

OIS
作成: 2021/02/24 (水) 17:44:01
通報 ...
1
hiroton 2021/03/01 (月) 10:40:54 4b3d7@f966d

特別いい案は知りません

データ的な部分と表示的な部分を分けて考えます

■データ的な部分
2行になる条件のもと、クエリ上でフィールドを2つ(3つ)作ります。

複数行:(2行になる条件) //true または false になる
表示1:IIf([複数行],"",[所属])
表示2:IIf([複数行],(所属の2行表示の文字列),"")

[複数行]フィールドは計算に使うだけなので、各表示用フィールドに直接記述する場合は不要です。2行になる条件が複雑な場合は分けたほうが見やすいでしょう

■表示部分
1行用表示のテキストボックスと2行用表示のテキストボックスを重ねて設置します。それぞれのテキストボックスはそれぞれの表示に見合うよう調整します。前面に表示されるテキストボックスは背景色を「透明」にします

全てのレコードで表示1も表示2も常に表示する設定で、[複数行]の条件で片側は空白(非表示)にすることで望みの見た目になると思います


文字列が長い場合にのみ二段表示にしたい

あいまいな条件なので、複雑な条件で自動認識させたいとかなると途端に難しくなります。回答では、これについてはほぼ「できているモノ」としています。クエリでやるのが難しい場合はテキストボックスは一つで、VBAで上余白を調整するとかになると思います

2

文字列が長い場合にのみ二段表示にしたい

元のデータがどのようになっているのか次第ですね。

データ自体に改行がある。
あるいは、
1行目のデータと2行目のデータが別のフィールドに分けている。
ということなら簡単に判断できますので、レポートのフォーマット時イベントで行数に応じて、セクションの高さとコントロールの位置を設定すれば可能ですね。

下記はグループヘッダーの項目名をセンタリングするサンプルですが、これを応用して、詳細セクションに置き換えれば同様にできます。

グループ項目を垂直方向にセンタリングする - hatena chips

特に改行とか、フィールドを分けてあるとかでないなら、2行にするかしないかをどのように判断するのか、2行にする場合場はどこで改行するのかどうやって決めるのか、などをどのように考えているのか詳細な情報が必要ですね。