• ベストアンサー

ACCESS2000の文字数制限について

ACCESS2000のテーブルで文字数制限をすると、全角でも半角でも 1文字と数えられてしまい、困っています。 全角は2文字、半角は1文字として数えたいのです。 モジュールを使い、LENB()、LEFTB()関数を使っても、上記と同様の現象で 解決しません。よい方法はありますでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#1296
noname#1296
回答No.3

APIを使う方法もあるかと思いますがもっと単純に・・・ LenB(StrConv("あいうえお", vbFromUnicode)) で10バイトが得られます。

go_ishikawa
質問者

お礼

ありがとうございます。 この方法で問題は解決しました。

その他の回答 (2)

  • selenity
  • ベストアンサー率41% (324/772)
回答No.2

単純に ------------------------- BOOL WINAPI DllMain(  HINSTANCE hinstDLL,  DWORD fwdreason,  LPVOID lpvReserved) {   return 1; } export long MyFunctionName(char *buf) {  return strlen(buf); } ------------------------- をするだけの、何の変哲も無い、只のDLLです。 これをAccessのモジュールから呼び出せばOKです。

go_ishikawa
質問者

お礼

親切に教えていただきありがとうございます。 問題を解決することが出来ました。

  • selenity
  • ベストアンサー率41% (324/772)
回答No.1

NT系カーネルを使っているOSは内部でUNICODEを使用しているためでは無いでしょうか? 以前、NT4+Access97で試した時は、C言語でDLLを作ってDLL内部でstrlen()でバイトサイズを計ったことがあります。 いまでも有効かどうかは分かりませんが、、、

go_ishikawa
質問者

補足

ご回答ありがとうございます。 確かに、使用しているOSはWin2000です。 ということは、同じプログラムであっても、OSによって処理が違うということでしょうか? 回答文にかかれている、C言語でDLLを作って、、、、という部分を詳しく教えていただけないでしょうか?どうしてもこの問題を解決する必要があります。

関連するQ&A

専門家に質問してみよう