- ベストアンサー
ACCESS2000の文字数制限について
ACCESS2000のテーブルで文字数制限をすると、全角でも半角でも 1文字と数えられてしまい、困っています。 全角は2文字、半角は1文字として数えたいのです。 モジュールを使い、LENB()、LEFTB()関数を使っても、上記と同様の現象で 解決しません。よい方法はありますでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
APIを使う方法もあるかと思いますがもっと単純に・・・ LenB(StrConv("あいうえお", vbFromUnicode)) で10バイトが得られます。
その他の回答 (2)
- selenity
- ベストアンサー率41% (324/772)
単純に ------------------------- BOOL WINAPI DllMain( HINSTANCE hinstDLL, DWORD fwdreason, LPVOID lpvReserved) { return 1; } export long MyFunctionName(char *buf) { return strlen(buf); } ------------------------- をするだけの、何の変哲も無い、只のDLLです。 これをAccessのモジュールから呼び出せばOKです。
お礼
親切に教えていただきありがとうございます。 問題を解決することが出来ました。
- selenity
- ベストアンサー率41% (324/772)
NT系カーネルを使っているOSは内部でUNICODEを使用しているためでは無いでしょうか? 以前、NT4+Access97で試した時は、C言語でDLLを作ってDLL内部でstrlen()でバイトサイズを計ったことがあります。 いまでも有効かどうかは分かりませんが、、、
補足
ご回答ありがとうございます。 確かに、使用しているOSはWin2000です。 ということは、同じプログラムであっても、OSによって処理が違うということでしょうか? 回答文にかかれている、C言語でDLLを作って、、、、という部分を詳しく教えていただけないでしょうか?どうしてもこの問題を解決する必要があります。
お礼
ありがとうございます。 この方法で問題は解決しました。