• ベストアンサー

Access97:漢字を除いて全角文字の入力を禁止するには

使う文字 漢字、半角英数、半角カタカナ、半角括弧() 禁止文字 全角英数、全角カタカナ ひらがな どうやったら入力制限出来るでしょうか?

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

  • ベストアンサー
noname#79209
noname#79209
回答No.2

> 正規表現ってアクセスの標準機能で無くREGSVR32でレジストリ登録が必要な機能ですか? 別にREGSVR32を使う必要はありません。system32フォルダにbregexp.dllを放り込む(コピーする)だけです。 あとは、「標準モジュール」をひとつ作ってそこに Public Declare Function bregMatch Lib "D:\asahi\bregexp.dll" Alias "Match" (szRegstr As String, szTarget As String) As String Public Declare Function bregMatchEx Lib "D:\asahi\bregexp.dll" Alias "MatchEx" (szRegstr As String, szTarget As String, mode As Long) As Variant Public Declare Function bregReplace Lib "D:\asahi\bregexp.dll" Alias "Replace" (szRegstr As String, szTarget As String) As String Public Declare Function bregTranslate Lib "D:\asahi\bregexp.dll" Alias "Translate" (szRegstr As String, szTarget As String, ret As String) As Long Public Declare Function bregSplit Lib "D:\asahi\bregexp.dll" Alias "Split" (szRegstr As String, szTarget As String, limit As Long) As Variant を書いておきます。 こうしておけば、 全角英数、全角カタカナ、ひらがなをチェックするなら、 チェックする文字列を「strCheckString」とすると、 If bregMatch("/[0-9A-Za-zあ-んァ-ヶ]/gk",strCheckString) = "1" then でトラップ出来ます。 If bregMatch("/[0-ヶ]/gk",strCheckString) = "1" then でも可です。 見つからなければ"0"(文字のゼロ)が返ります。

COS_BUSTER
質問者

お礼

ありがとうございます。かなりわかりやすくなりました。

その他の回答 (3)

noname#79209
noname#79209
回答No.4

> 正規表現の機能を mdb に内蔵って mdbに内蔵は無理です。 私はデータベース作成時には、フォルダ単位で管理しています。 例えば「hogehoge」というデータベースを作成する場合 1. 「hogehoge」というフォルダを作成する 2. そこに A. 「hoge_prg.mdb」...フロントエンド部(プログラム部<-フォーム、クエリ、モジュール等) B. 「hoge_dat.mdb」...データ部(テーブルのみ) C. 「bregexp.dll」 をワンセットで置く 3. 「hoge_prg.mdb」から「hoge_dat.mdb」上のテーブルにリンクを作る 4. 予め用意してある「ref.mdb」から必要な「標準モジュール」(「mdl_bregexp」<-ANo.#2で示したステートメント群)を「hoge_prg.mdb」へインポート ということを行っています。 mdbをプログラム部とデータ部に分けることにより、稼働しているデータベースに対してプログラム変更を行う際にデータを壊してしまうリスクを抑える事が出来ます。 私の場合このようにフォルダ単位で管理しますので、ファイルが複数あってもあまり気になりません。

noname#79209
noname#79209
回答No.3

ゴメンナサイ。 標準モジュールの例は、私の環境で書いてしまいました。 「D:\Asahi\bregexp.dll」の部分は 単に「bregexp.dll」でかまいません。 PCによっては、system32フォルダがいじれないようになっている場合もあります。 そんなときは、私の環境で書いてしまったように、bregexp.dllの在処を書けばOKです

COS_BUSTER
質問者

補足

mdb と bregexp.dll 二つのファイルがありますよね。 正規表現の機能を mdb に内蔵って 無理なんでしょうか? 参照方式でもOKなんですが シンプルな方がいいかなと思って・・・

noname#79209
noname#79209
回答No.1

プロパティだけではお望みの入力制限は出来ないと思います。 「更新後処理」のイベント・プロシージャで入力データをチェックするしかないでしょう。 正規表現を使えばスッキリしたコードが書けるのでは? 正規表現を可能にするライブラリは以下で... http://www.hi-ho.ne.jp/babaq/bregexp.html

COS_BUSTER
質問者

お礼

正規表現ですか? 指定のアドレス部分を見てみたのですが よく理解できませんでした。 簡単なサンプルって作れますか? 正規表現って アクセスの標準機能で無く REGSVR32でレジストリ登録が必要な機能ですか?

関連するQ&A