• ベストアンサー

アクセス2000でイベントプロシージャで外字の抽出

クエリーで Like "*[" & Chr(&hf040) & "-" & Chr(&hf9fc) & "]*" できますが イベントプロシージャのなかで instr()関数で使えないでしょうか 単純に上の記述をまねして氏名フィールドのなかに外字があるかどうか instr([simei],"[" & Chr(&hf040) & "-" & Chr(&hf9fc) & "]") >0 うまくいきません。 記述がまちがっているのでしょうか それとも外字の文字コード1文字づつLOOPさせないといけないのでしょうか

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

外字が含まれるか否かだけでしたら、Like 演算子で Me!simei Like "*[" & Chr(&hf040) & "-" & Chr(&hf9fc) & "]*" (↑フォーム上での場合) True か False が返ってきますので、そちらで調べたらどうでしょう。 Instr ですとお考えの通りに回してゆかなくてはならないので 外字は最大1880文字×氏名文字長で遅くなってしまいそうです。 余談ですが、simei を一文字ずつLike 演算子でチェックして行けば 何文字目が外字使用かもわかりますね。 UniCodeで外字が有った場合も要チェックなのかも?

関連するQ&A

  • 外字の除去方法

    WindowsXP(SP2) VisualBasic6.0(SP6) を使って開発をしています。 現在、文字列から外字を除去するプログラムを作っています。 S-JIS(F040~F9FC)にあたる外字を除去する方法は分かったのですが、Unicode(E000~F8FF)にあたる外字を除去する方法が分からず困っています。 ご存知の方がいましたら教えてください。 宜しくお願いします。 (追伸) ↓↓S-JIS外字を除去する場合------------------------------------- Public Function DeleteGaiji(strText As String) As String Dim Reg As New RegExp Reg.Pattern = "[" & Chr(&HF040) & "-" & Chr(&HF9FC) & "]" Reg.Global = True DeleteGaiji = Reg.Replace(strText, "") End Function 上記の方法でS-JIS外字を除去しようと思っています。 Unicodeの場合は、 Reg.Pattern = "[" & Chr(&HE000) & "-" & Chr(&HF8FF) & "]" とすれば良いのでしょうか? 別の表現方法があるのかなと思って、悩んでいます。

  • AccessのクエリでvbLfのみ抽出するには

    Access2010のクエリー(SQL)で vbLfかvbCrLfが含まれているレコードを抽出するには、 SELECT [テーブル1].* FROM テーブル1 WHERE [テーブル1].フィールド1 Like "*" & Chr(10) & "*"; vbLfが含まれているレコードは抽出せず、 vbCrLfが含まれているレコードだけを抽出するには、 SELECT [テーブル1].* FROM テーブル1 WHERE [テーブル1].フィールド1 Like "*" & Chr(13) & Chr(10) & "*"; でよいと思いますが、 vbCrLfが含まれているレコードは抽出せず、 vbLfが含まれているレコードだけを抽出するには、 どのように記述すればよいのでしょうか。 よろしくお願いします。

  • リストボックスのイベントプロシージャー

    「氏名一覧」というフォームに、該当する氏名が リストボックスの中に表示されています。 リストボックスから1名氏名を選んだ時(ダブルクリックした時)に、 その選んだ人の個人情報のフォームを開くようにしたいのですが、 「氏名一覧」リストボックスの [ダブルクリック時]イベントプロシージャーでのコードの記述の仕方が分かりません。どなたか教えて下さい。宜しくお願いします。 ACCESS97を使っています。

  • Access2010 イベントプロシージャのエラー

    Accessの初心者です。テキストを読みながら、フォームに配置したコンボボックスにイベントプロシージャを設定して実行したところ、エラーメッセージ表示されました。どなたか御指導頂ければ幸いです。 1.関連するオブジェクト a) 一側テーブル名: T_選手プロフィール  このテーブルに「ID_選手プロフィール」という主キーフィールドがあります。 b) 多側テーブル名: T_期間成績  このテーブルに「選手プロフィール親ID」というフィールドがあります。 * リレーションシップウィンドウで「ID_選手プロフィール」と「選手プロフィール親ID」にリレーションシップを設定しました。 c) クエリ名: Q_期間成績_現役選手プロフィール  このクエリの中に、「ID_選手プロフィール」と「氏名」と「登録番号」というフィールドがあります。 d) フォーム名: F_期間成績 サブフォーム「T_期間成績明細」を中に入れたフォームを作成しました。 2.フォーム上での操作 a) フォーム「F_期間成績」に、コンボボックス「登録番号_コンボ」というコンボボックスを配置しました。 b) このコンボボックスのコントロールソースは、c)の「Q_期間成績_現役選手プロフィール」の「選手プロフィール親ID」です。 c) このコンボボックスで選択した「ID_選手プロフィール」という値に対応する、「氏名」をフォームに新たに配置した非連結のテキストボックス「氏名_テキスト」に、「Q_期間成績_現役選手プロフィール」の「氏名」フィールドの値を表示させようとしています。 d) 「登録_コンボ」コンボボックスの更新後処理からコードビルダーを起動し、テキストを参照しながら以下のコードを書きました。 Private Sub 登録番号_コンボ_AfterUpdate() Name = DLookup("[氏名]", "Q_期間成績_現役選手プロフィール", "登録番号=登録番号_コンボ") If Not IsNull(Name) Then 氏名_テキスト = Name End If End Sub e) フォームにてコンボボックスを操作したところ、「実行時エラー '94': Nullの使い方が不正です。」という実行時エラーが表示されました。色々と試してみましたが、上手くいきませんでした。 分かりにくい説明で恐縮ですが、宜しくお願い致します。

  • (アクセス)全てのイベントプロシージャが無反応に

    何らかの原因でプロシージャやコマンドボタンに設定したマクロ等が無反応になる現象に苦慮しています。 多くのフォームの中で、この現象に関連するフォームは2画面あり、それぞれをフォームA、フォームBということで説明いたします。((1)~(4)) (1)フォームAのコマンドボタン押下でフォームBを開きクエリーのデータ(フォームAで指定した条件)  を表示しています。  フォームBで他のフォームと異なっているプロパティは次の通りです。  ・ポップアップ ----はい  ・作業ウィンド固定 --はい (2)フォームBにはレコードソース(クエリ)の値を表示する幾つかのテキストボックスとコンボボックス  が2つあり、それぞれをコンボA、コンボBとするとフォームBを開いた時はそれぞれにクエリーの   データを表示し、変更する場合はコンボAで選定した条件でクエリによりコンボBにデータを表示す  るようにしています。 (3)なお、コンボAの列数は2で、コンボボックスには列1のデータ(商品名)を表示するようしていて列 2の値(商品コード)を一旦テキストボックスに取り出し、そのコードでクエリによりコンボBのデータ  を表示しています。テキストボックスのプロパティのコントロールソースには次のように記述していま す。   =コンボ186.column(1)   ※=コンボ186がコンボAのことです (4)あと、フォームBにはデータをチェックするためのイベントプロシージャが幾つかとフォームAへ戻る ためのコマンドボタンがありますが他のフォームと比べても特に問題は無いように思えます。 以上のような環境でフォームAからフォームBを開いた時に、フォームBにはレコードソースであるクエリの値は全て表示するものの全てのイベントプロシージャ及び(3)で説明しました  =コンボ186.column(1) の処理が一切動作しなくなります。 しかし、次の操作により回復し、その後はACCESSを終了し再起動しても正常に動作します。  ・フォームBをデザインビューで開く  ・フォームBを開く時に設定しているイベントプロシージャを表示  ・イベントプロシージャをいじって閉じる。(内容は変更しない)  ・フォームBをホームビューで開く   だらだらと長くなり説明も不十分かと思いますが、原因がどうしてもわからなく困っております。 何か手がかりを教えて頂けたらと思い投稿しました。 よろしくお願いいたします。

  • MSアクセスで出力の位置をかえたい

    MSアクセス2000で封筒に氏名を出力しています。 条件によって氏名の上位置を変えたいのですが、 デザインビューで氏名を配置して イベントプロシージャで条件によってプロパティのTOPをかえています プログラムは簡単にしますと、下記のように記述しています。 Y=ME!SIMEI.TOP      '今回の場合は3800です IF ISNULL(TRIM(ME!KAISYA))=TRUE THEN ME!SIMEI.TOP=Y-200 ELSEIF ・・・・・・・・・・・・・・・・・・THEN ・・・・・・・・・・・・・・・・・ ELSE ENDIF いろいろな封筒があるので定数で初期化できないので次のレコードの時 さらに200上がってしまいます。 なにか良い方法はないでしょうか

  • 外字を変換したい

    Windows2000(sp3) VisualBasic(sp5) で開発中です。 いま、 『文字列の中に外字(F040~F9FC)が含まれていないかチェックし、含まれていたら、特定の文字に変換する。』 と言うことをしたいのですが、この場合、文字列を16進に変換し、その上で、F040~F9FCが含まれていないかチェックすると言う方法しか思い浮かびません。 もっとスマートで、処理時間が少ない方法等ありましたら教えてください。 よろしくお願いします。

  • [Access2000]アクションクエリでお尋ねします。

    テーブル名は Table フィールド名は Filed で Filed 内には abc_uvw、def_xyz のように "_" で仕切られた文字列がはいっています。 そこで、次のようなクエリで "_"より後ろの値でFeildを書き換えようと思うのですが、 もともとのFieldの値がNULLである場合、その部分だけエラーになります。それ以外の値のはいっている部分に関してはエラーにならずに処理されますが、このエラーを回避する方法はないのでしょうか? UPDATE Table SET Field = Mid([Field],InStr(1,[Field],"_")+1,Len([Field])-InStr(1,[Field],"_"));

  • クエリーで、全角混じりデータの抽出[access95]

    半角で入力すべきフィールドの中に全角文字が混在している時に、 この全角文字が混在しているデータを、クエリーで抽出する方法を 教えてください。 データ型はテキストで、フィールド長は50です。 また入力されているデータは、任意<50文字とないっています。

  • VBAのプロシージャのことで

    TEST1のプロシージャ内に使用している readfileという変数の中にテストという文字列を代入し、 文字列が代入された状態で Callによって別のプロシージャを読みにいったとき TEST(変数)に入った文字列ごと持っていくには どの様に記述すればよいかどなたか教えていただけませんでしょうか・・・。。 ----------------------------------------------------------- Sub TEST () Dim readfile As String readfile = "テスト" Call TEST2 End Sub ----------------------------------------------------------- Sub TEST2() readfile ←テストという文字列をTESTプロシージャから持ってきたい End Sub ----------------------------------------------------------- 単純に書いてみたコードですが、この様なことは可能なのでしょうか? すいませんがいただけないでしょうか><;

専門家に質問してみよう