プロが教える店舗&オフィスのセキュリティ対策術

ACCESS2000のテーブルで文字数制限をすると、全角でも半角でも
1文字と数えられてしまい、困っています。
全角は2文字、半角は1文字として数えたいのです。

モジュールを使い、LENB()、LEFTB()関数を使っても、上記と同様の現象で
解決しません。よい方法はありますでしょうか?

A 回答 (3件)

APIを使う方法もあるかと思いますがもっと単純に・・・


LenB(StrConv("あいうえお", vbFromUnicode))
で10バイトが得られます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/12/01 15:01

単純に


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

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

お礼日時:2001/12/01 15:02

NT系カーネルを使っているOSは内部でUNICODEを使用しているためでは無いでしょうか?



以前、NT4+Access97で試した時は、C言語でDLLを作ってDLL内部でstrlen()でバイトサイズを計ったことがあります。
いまでも有効かどうかは分かりませんが、、、

この回答への補足

ご回答ありがとうございます。
確かに、使用しているOSはWin2000です。
ということは、同じプログラムであっても、OSによって処理が違うということでしょうか?

回答文にかかれている、C言語でDLLを作って、、、、という部分を詳しく教えていただけないでしょうか?どうしてもこの問題を解決する必要があります。

補足日時:2001/11/30 21:52
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!