『川中重司、ほのぼのIT税理士!(^^)のブログ』のバックアップブログです。10)パソコンではどうする:文字数を数える関数はExcelとACCESSで結果が異なる。

ではどうする:文字数を数える関数はExcelとACCESSで結果が異なる。

ではどうする:文字数を数える関数はExcelとACCESSで結果が異なる。

この記事は『文字数を数える関数はExcelとACCESSで結果が異なる』の後編になります。

パソコン関係では、
半角文字を1バイト、全角文字を2バイトとカウントします。
バイト数を数える関数は、『=LENB()』(EXCELやACCESSでは。)

この関数、確かにEXCELでは正しく動くのですが、ACCESSでは、半角全角を問わず、一文字を全角(=2バイト)として結果を返してきます。

これでは困るのだ・・・。

ググってみました(^^)

結論として・・・、

Unicode と ANSIAccess2000からUnicodeが採用されました。これは、全ての文字(全角、半角、漢字)を2バイトであらわします。逆に、ANSI形式は、全角文字と漢字は2バイト、半角文字は1バイトで表します。

Access2000以降のLenB関数よく、解説書で「LenB関数は、半角なら1バイト、全角なら2バイトで戻り値を返します」と記載されていますが、Access2000以降、この記述は誤りです。

しかし、Unicode形式の文字をANSI形式の文字を変換する関数が用意されているので、これを利用すると無事うまくいきます。

***以上は、Microsoft Access Clubの『Len関数 と LenB関数 : 一日一見』より転載しました。***

なるほど。
一旦文字列を、Unicode形式からANSI形式へと変換する必要があるのですな。
それには、StrConv関数を用いると。
ありがとうございました。


今、川中のACCESSファイルでは、下記の関数が活躍しています。
 LenB(StrConv([フィールド名],128))

話の発端は、
60バイトを越えるデータが、別のDBへのインポートの際にエラーになるのでこれを防ぎたい。
そのためにはまず、60バイトを越えるデータをピックアップ・・・。
と言うところまでは上手く動いています。

さて、次なる希望です。

60バイトを越えるデータ、川中の場合は文字列なのですが、このデータを60バイト以下に自動で縮めて欲しい・・・(^^ゞ

出来るかな?
(昔、長い文章を要約してくれるソフトがあったことを思い出します。)

必要は発明の母。

また、考えてみましょう。
なんとかなるかな・・・???


写真は、確定申告の時期の差し入れの一枚。
ありがとうございましたm(__)m


 助成金・給与計算・社会保険のご相談なら鯖江の税理士法人川中経営
  税理士・ITコーディネータ 川中重司



川中は、ツイッターで時々つぶやいています。よろしければご覧下さい。
川中は、ツイッターで時々つぶやいています。よろしければご覧下さい。



このブログ記事について

このページは、鯖江の税理士が2010年3月21日 11:05に書いたブログ記事です。

ひとつ前のブログ記事は「越前市中央図書館の営業時間」です。

次のブログ記事は「さあ打ち上げ・魚の美味しいイタリアン『ラカーラ』へ・・・!?」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。