• ベストアンサー

Accessで文字列の長さによって、フィールドの幅を自動で合わせる方法

zenkoの回答

  • zenko
  • ベストアンサー率40% (2/5)
回答No.2

Len関数は文字数が返るので全角・半角の判断では使えません。 LenB(StrConv(文字列, vbFromUnicode)) とすればバイト数が算出できます。半角は 1、全角は 2として文字列のバイト数が 求められます。 フォントやフォントサイズによって微妙に調整が必要かと思いますが、半角文字の 幅さえわかれば、このバイト数を乗じて幅を変えることができるかもしれません。 直接の回答じゃないですが、参考になれば幸いです。

noname#20962
質問者

補足

半角全角を区別してバイト数を出す方法が便利そうなんで、ぜひ使えるようになりたいんですが、上の LenB(StrConv(文字列, vbFromUnicode)) をクエリで使用すると vbFromUnicode が フィールド名として認識されてしまうのですが・・・。

関連するQ&A

  • accessのフィールドの数

    初心者です。 accessでレポートのフィールドの数というのは、最大でいくつまで可能なのでしょうか? いま扱っているデータを、レポートで印刷しようとすると、ウィザードで作成するさいに、「フィールド数が多すぎます」というようなメッセージが出ます。 デザインでレポートの幅を広げようとしても、一定以上大きくなりません。 よろしくお願いします。

  • Accessのフィールドサイズ

    Access2000を使用していますが、テーブル作成時に 「テキスト型」でフィールドサイズを「10」に設定して データを入力すると、半角でも全角でも「10桁」までの入力に なりますが、フィールドサイズは半角も全角も関係ないのでしょうか? 「テキスト型」の最大フィールドサイズは「半角255文字」と 思っていたのですが、全角でも255文字入力できました。

  • 全角文字と半角文字を判別して文字列を追加

    全角文字と半角文字が混合している文字列に文字を追加するプログラムを考えています。 仕様としては全角から半角に変わる際には全角文字の後ろに1234を、 半角から全角に変わるときは半角文字の後ろに4321をつけるというものです。 例1 文字列が「あxxxお」ならば出力結果は「あ1234xxx4321お」 そこで質問なのですが 文字列から全角文字と半角文字をプログラム上で判別して 上記のように出力するにはどうしたらいいんでしょうか? ヒント等ございましたらどうぞお願いします。 とりあえず作ってみた例1の結果を無理やり出力するプログラムのコードを載せておきます。 こちらをうまく改変してくださっても結構ですのでよろしくお願いいたします。 #include <stdio.h> #include <string.h> int main(void){ unsigned char str0[256] = "あxxxお", str1[256] = "1234",str2[256]= "4321"; unsigned int zh,hz, len0 = strlen(str0),len1=strlen(str1),len2=strlen(str2); printf("挿入前:%s\n",&str0); zh=2; //全角から半角に変わる位置 hz=5; //半角から全角に変わる位置 //1234を挿入/// memmove(&str0[zh+len1], &str0[zh], len0 - zh+1); memcpy(&str0[zh], str1, len1); //4321を挿入/// memmove(&str0[hz+len1+len2], &str0[hz+len1], len0); memcpy(&str0[hz+len1], str2, len2); printf("挿入後:%s\n",&str0); return 0; }

  • テキストフィールドに入力された内容に文字列を付加して送信

    氏名[    ] フリガナ[    ] 住所[    ] 建物名[    ] といったフォームからCGIにデータを送信するようになっていて、そのCGIはjcode.plを使った半角カナを全角カナに変換する仕掛けがついているのですが、このフォームに入れられる文字列は短いので完全に置き換えられず、半角カナだけを使って情報を入れられてしまうと文字化けしてしまいます。 また、このように複数のテキストフィールド全てに「半角カナは使えません」というアラートを付ける方法もわかりません。 そこで、このCGIにはいたずら防止機能がついているために例えば「死んでしまえchack」などと入力しても不適切な言葉が自動削除されてただ「chack」だけで処理されるのを逆に利用して、例えば「ナントカマンション」と半角で入力されたら、CGIには「死んでしまえナントカマンション」と「死んでしまえ」という文字列が自動付加されて送信されるようにしたいのですが、その方法がわからなくて困っています。 例えば http://chaichan.web.infoseek.co.jp/qa5500/qa5833.htm このようなページを見つけたのですが、この方法ですと、テキストフィールドでなくテキストエリアである上に、付加した文字列が実際にテキストエリアに出てきてしまって具合が悪いのと、その、文字列が付加された入力内容をどうやってCGIに送信したらいいのかわかりません。 ちなみに、私にはCGIの方をいじって何とかする能力はありません。 普通なら <input name="フリガナ" type="text" id="フリガナ" /> というHTMLになるわですが、これを何かいじって、フォーム上にこの「死んでしまえ」などという不適切な言葉を表示せずにCGIにはそれを付加して送る方法はないでしょうか? どうかよろしくお願い致します。

  • Accessの文字数を調べたい

    住所項目で半角と全角の混ざった状態になっており、半角1文字は1として全角は1文字は2として合計文字数を算出したいのですが、良い方法を教え下さい。 例 ○○県☐☐市1-2-3 Len  11 LenB 22 求めたい値は、全角6文字×2 + 半角5文字×1 = 17

  • Accessのレポートの文字にカッコを追加したい。

    Accessのレポートの文字にカッコを追加したい。 レポートに、名前とふりがなを表示させるのですが、ふりがなにカッコを付ける方法がわかりません。 どうすればいいのでしょうか? 【今】 山田 太郎 やまだ たろう      ↓ 【このようにしたい】 山田 太郎 (やまだ たろう) レポートの項目(テーブル)は、 名前_漢字 と 名前_ふりがな に別れています。 名前_ふりがな のところの前後にカッコを付けたいです。 とりあえず、書式のところで ="( " & [名前_ふりがな] & " )" 見たいな事はしてみたのですが・・・ どうすれば、希望どおりになるのでしょうか?

  • 変数に格納されている特定の文字列のフィールド番号を抜き出したいと考えて

    変数に格納されている特定の文字列のフィールド番号を抜き出したいと考えております。 お世話になります。 現在、変数に格納されている特定の文字列のフィールド番号を抜き出したいと考えております。 例として下記名前を指定した変数が有るとします。 NAMEFILE="愛 麻衣 美衣 魔印" このとき「美衣」をgrepすると「3」を言う数値を返したいと考えております。 色々探して「match関数の RSTART」にて行いたい事と近い事が出来たのですが、 開始文字を抜き出す為、かえってくる数値は「6」となってしまいます。 行いたい事として、この場合区切り文字をスペースとし左側から数を抜き出したいのですが 何か良い情報は有りませんでしょうか。 知恵をお借りできたらと存じます。よろしくお願い致します。

  • accessで複数のフィールドで重複を削除して...

    Access2000 どなたか助けてください。 アクセスでtestテーブルがあって、フィールドが(名前、フリガナ、〒番号、住所、電話番号、詳細)とあるんですが、そこで、名前と電話番号が重複(空白を無視)しているレコードを削除(1件残して)して、すべてを表示させたいんですが、どなたかわかるかたいますか。お願いします。

  • Access2003複数フィールドの文字数合計

    複数のフィールドに入力されている文字列(数値や文字)の文字数をカウントし、そのレコードごとの合計を1回の更新クエリで算出する方法があれば教えてください。 =========================================================== ☆1つのレコードにA~Eのフィールドがあり、全角・半角の文字および英数字のデータが混在しています。(データの入っていない場合は「null」となる) (例) No  [A]       [B]     [C]       [D]       [E] 1  東京都   港区   ○○1丁目  1-2-3   ●×マンション101 2  神奈川県  横浜市  ○○○町   10-10   △△ビル10F  3    〃      〃     〃       〃        〃    =========================================================== (1) これらの各フィールドの文字数を「LEN関数」を使って、新たなフィールドF~Jに文字数を表示する (2) そして、上記のF~Jの文字数を「SUM関数」を使って、フィールドKへ合計数を表示しています。 (例) No  [F]  [G]   [H]  [I]  [J]   [K] 1   3   2   5   5  10    25 2   4   3   4   5   7     23     =========================================================== 現在は、上記のように、各フィールドの文字数を出してから合計数を計算していますが、 この合計数[K]の値を、フィールドF~Jを作成しなくても一度で計算できるような関数式があれば教えてください。 私は、SQLが書けないので、フィールド欄へ関数式を入力しておりますが、 関数だけでは出来ない場合は、SQLで教えていただければ幸いでございます。 お手数お掛けしますが、宜しくお願い致します。

  • CrystalReportの文字列の折返しについて

    [OSのVER]:WindowsXPSP2 [VBのVER]:.Net 今現在 .NET+CrystalReportXI で開発をしております。 半角カナ、記号、英数字等等混在したフィールドを式フィールドで 連結し、折り返して表示しようと思うのですがデータを出力すると 表示領域は確保してあるにもかかわらず、データが途中までしか 出力されないという事象が発生しています。 例) [連結データ] "レポート" & "(TEST0126)" [表示結果] MSゴシック 10.5Pで出力 レポー ト(TEST0126) っと折返しの位置がおかしくなっています。 色々と調べてみたのですが、文字ピッチの問題やら、バージョンの違いなど原因はいくつかあるようなのですが、どの質問でも解決まで至っていません。 どなたかご存知の方いらっしゃいましたら、解決方法を教えてください。 よろしくお願いいたします。