- ベストアンサー
Accessで文字列の長さによって、フィールドの幅を自動で合わせる方法
よく住所録を、レポートでプリンタに出力するのですが、人の名前や住所の長さが毎回違う為、調整に凄い時間がかかります。 A4用紙にきっちりと収めないといけないので、収まりきらないときは、名前のフリガナを少し省いたりすることもあります。 今はLen関数を使って文字の長さをある程度計って、おおまかに調整しているのですが、半角文字などが入ってくると、正確な長さが出なかったりします。 Accessにある機能を使って、レポートで出力するさいの、フィールドの幅を自動調整(フィールドに格納されている最大文字数が入る幅に調整)はできるのでしょうか?できないのでしたら、他に良い方法などございましたら、アドバイスして下さいませ! 宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
データの量に応じて、フィールドの横幅を自動調整することはできませんが、 縦幅なら調整できます。 イメージとしては、次のような感じです。 データが少ない場合 ┌───────┐ │ああああああ │ └───────┘ データが多い場合 ┌───────┐ │あああああああ│ │あああああああ│ │あああああああ│ │あああ │ └───────┘ 上記のようなパターンでもよろしければ、 次の操作で、レポートのデザインビューを使い プロパティの設定を行ってください。 1)レポートをデザインビューで表示 2)自動調整したいコントロールを選択 3)プロパティシートを表示 4)[書式]タブ内の[印刷時拡張]を[はい]に設定 5)プロパティシートが表示されたまま、 自動調整したいコントロールのあるセクションを選択 プロパティシートのタイトルバーが 「セクション:○○」と表示されます 6)[書式]タブ内の[印刷時拡張]を[はい]に設定 以上です。 これで、データ量が多くなったときは、 縦にコントロールが伸びるようになります。 お役に立てばよいですが。
その他の回答 (2)
- zenko
- ベストアンサー率40% (2/5)
クエリーで使用するのでしたら vbFromUnicode を 128 とすればいいです。 LenB(StrConv(文字列, 128))
お礼
LenBだと、期待どおりの 結果が得られなくて、???だったのですが これで半角文字を識別できます ありがとうございました♪
- zenko
- ベストアンサー率40% (2/5)
Len関数は文字数が返るので全角・半角の判断では使えません。 LenB(StrConv(文字列, vbFromUnicode)) とすればバイト数が算出できます。半角は 1、全角は 2として文字列のバイト数が 求められます。 フォントやフォントサイズによって微妙に調整が必要かと思いますが、半角文字の 幅さえわかれば、このバイト数を乗じて幅を変えることができるかもしれません。 直接の回答じゃないですが、参考になれば幸いです。
補足
半角全角を区別してバイト数を出す方法が便利そうなんで、ぜひ使えるようになりたいんですが、上の LenB(StrConv(文字列, vbFromUnicode)) をクエリで使用すると vbFromUnicode が フィールド名として認識されてしまうのですが・・・。
お礼
文字がはみ出るレコードを探すのに使ってます 作業が少し楽になりました、ありがとうございます。