• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Accessでの禁止文字チェック)

Accessでの禁止文字チェック方法とは?

30246kikuの回答

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.2

一例で良いですか。 VBA でユーザ定義関数を作って、それを呼び出して処理します。 「名称」の文字列から「文字」を1つ1つ削除していき、 最終的に何らかの文字が残っていたら・・・・と考えてみます。 1つ1つを削除する時には、Replace を使用します。 ここで、毎回レコードセット(「文字」を得て、クルクル回す時)を得ていると 遅くなると思うので、「文字」を Dictionary に展開しておいて、メモリ上で処理・・・ 「文字」を Dictionary に展開 : DicMake 何らかの文字が残るか  : DicCheck (関数名は適宜変更してください) 標準モジュールに以下を記述します。 Private Const sTable As String = "許可文字一覧" Private Const sField As String = "文字" Private dic As Object Public Function DicMake() As Boolean   Dim rs As New ADODB.Recordset   If (dic Is Nothing) Then Set dic = CreateObject("Scripting.Dictionary")   dic.RemoveAll   rs.Open sTable, CurrentProject.Connection, adOpenForwardOnly, adLockReadOnly   While (Not rs.EOF)     dic.Item(rs(sField).Value) = Null     rs.MoveNext   Wend   rs.Close   DicMake = True End Function Public Function DicCheck(vSrc As Variant) As Boolean   Dim sS As String   Dim v As Variant   DicCheck = True   If (dic Is Nothing) Then Exit Function   If (dic.Count = 0) Then Exit Function   sS = vSrc & ""   For Each v In dic.keys     sS = Replace(sS, v, "")     If (Len(sS) = 0) Then Exit For   Next '  sS = Trim(sS)   If (Len(sS) = 0) Then DicCheck = False End Function ※ ADO を使ってますが、DAO でも・・・・ ※ Trim は必要に応じて・・・・ このユーザ定義関数を使って、クエリを作ります。 (SQLビュー表示にして) SELECT * FROM データ一覧 WHERE DicMake() AND DicCheck(名称); ※ パラメータ(引数)を持たない DicMake() は1度しか呼ばれません。 なので、WHERE の1番最初に呼び出すことで 「文字」がメモリ上に展開されます。 参考になるかどうか、しっかりと検証はしてください。

2010greentea
質問者

お礼

回答ありがとうございました。 補足で再度質問させていただいていますが こちらも回答いただけるととても有難いです。 引き続きどうぞよろしくお願い致します。

2010greentea
質問者

補足

早速回答ありがとうございました。 関数を定義して実行してみたところ、 Dim rs As New ADODB.Recordset 行で で「ユーザ定義型は定義されていません」が出てしまい、 試しにDim rs As New DAODB.Recordset と書き変えたりしたのですが 如何せん知識不足で対処できませんでした。 そこで、キャッシュに展開せずに、DicCheck だけを実行する形に 変えようとしていますが、うまく修正できません。 許可文字数が150字程度と少ないので キャッシュに展開しない方法をご教授いただけないでしょうか。 どうぞよろしくお願い致します。

関連するQ&A

  • 禁止文字をエクセルかアクセスでチェックする方法について

    あるデータ一覧に、禁止文字が含まれているかをエクセルorアクセスで確認したいのですが、関数やSQLが分かりません。 どなたかお教え頂ければ大変助かります。 【やりたいこと】 「◆データ一覧」に、「◆禁止文字一覧」が含まれているかをデータチェックしたい。 以下の場合だと、「◆データ一覧の1、2レコードめ」がデータ精査結果になればOK。 ------------------------------------------ ◆データ一覧 1レコードめ  あいうAお 2レコードめ  かきくけB 3レコードめ  さしす1C ◆禁止文字一覧 1レコードめ  A 2レコードめ  B 3レコードめ  D ------------------------------------------ どうぞ、よろしくお願いいたします。

  • アクセスのデータ型について

    ルックアップウィザードを利用してテーブルを作成しています。  項目がア、イ、ウの3項目ありそれぞれにルックアップウィザードを利用したのですが、おなじように操作したつもりがア、イのデータ型はテキストになって、ウのデータ型は数値型になりました。  ウのデータ型がテキスト型にならないのは何故なんでしょうか。  オフィスXPを使用しています。

  • ACCESSについて

    エクセルでは、重いので、ACCESSでデータベースを作ろうと初めてやる気になった者です。 ACCESSでこのようなことが出来るのでしょうか?あくまでも例えなので現実味が無いかも知れません。 社員の通勤経路について管理を行うとします。 社員の数は、1000人程度。 Aさんは、A社のAというバス停からHというバス停まで路線バスに乗るとします。 Bさんは、同じくA社のBというバス停からHというバス停まで。Cさんは、同じくA社のCというバス停からJというバス停まで。Dさんは、B社のAからQまで。というように1000人が各々違ったバス通勤経路を利用しているが共通した区間もあるとします。どの区間を誰が利用しているのかを抽出するようなデータベースを作りたいと考えています。バス停の名前は、A,B,Cときれいに並んでいる会社もあればバラバラな会社もあるとします。そのため、バス停A~バス停Bまでの区間を"ア"区間,B~C間を"イ"区間,C~D間を"ウ"区間(以下同様)区間ごとに固有の名称を割り当て、"ウ"という区間を利用している社員のリストがほしいと考えた場合。各自のデータベースとしては、利用する区間の一覧(例えばAさんの場合、ア、イ、ウ、エ、オ、カ、キとすると)を入力しておき"ウ"が含まれる人を検索すればAさん,Bさん、Cさんがヒットするというようなことを行いたいと思います。その場合、Aさん、Bさん、Cさんは、共通でウ、エ、オ、カ、キの区間を通過するので、この経路を共通1ルートと定義して、Aさんのデータ入力を、ア,イ,共通ルート1と入力しておけば、入力の手間が省けて便利だと思います。しかし、検索するときは、あくまでも、"ウ"区間を検索すうるので、どこかで、データを自動的に置き換える必要があるような気がします?どのようにすれば実現できるのでしょうか?どなたか?詳しい方がいらっしゃいましたら教えて頂けないでしょうか?宜しくお願い致します。

  • 一太郎13での文字の縦ライン統一について

    一太郎13での文字の縦ライン統一について アンケート設問用紙に 1 ○○について  (1) ○○についてどう思いますか。    ア 良い    イ 普通    ウ 悪い という項目を作りましたが、 「アイウ」より左側の部分を全角スペース3文字分で打っても、    ア 良い    イ 普通     ウ 悪い のようにずれてしまうことがあります。 タブだと3文字以上右にずれてしまいます。 ワードのように同じ幅のスペースとして認識してくれません。 どうすればきれいに揃いますか? また、画像にあるように、文字間の幅はどのようにしたら文書全体で均一になりますか? (均等割り付けをしていない部分の文字間が詰まってしまい、困っています。) ちなみに、データは別の方が作成したものです。 (ワードに変換すると余白等がおかしくなったので、一太郎で作業することにしました。)

  • 保有資格の管理をしているのですが、

    保有資格の管理をしているのですが、 現在あるデータは下記の並びの所有状況一覧と 氏名一覧(200名程度)資格名称一覧(20こ程度)です。 ―所有状況一覧(500行ほどのデータ) A   B   C      氏名 資格名 取得日 あ  ア   2009/1/1 あ  イ   2009/1/2 い  イ   2008/1/3 資格名称がア、イ、ウの3種類とした場合下記のように それぞれが未取得の資格の一覧を抽出したいのですが、 A   B    氏名 資格名   あ  ウ い  ア い  ウ 個人毎に取得している資格数が異なるため1人当たりの行数が統一されていないので 関数の力での照合は無理かと判断したのですが マクロ等で処理することは可能なのでしょうか? マクロについては作業に必要な度に何とかしのいできているだけで 自分がやりたいことができるのかすら分からない状況なのですが、 もしいい方法がありましたら、ご教示宜しくお願いします。

  • エクセル ある文字列が含まれるセルを検索する方法

    初めて問い合わせします。大量のデータを検証しなければいけません。 関数などで方法を教えて頂ければ幸いです。 1セルに対し、1セルを検索する方法はわかっております(countifやifを使って) でも、セル単位ではなく文字列単位での検索方法を知りたいと思います。 わかりづらいかもしれませんが、現状をお知らせします。 シート1「登録データ一覧」(5万件) A列1行目 ア社 A列2行目 イ社 A列3行目 ウ社 A列4行目 エ社 A列5行目 ☆ーア社 A列6行目 ウー☆社 シート2「検索したい社名一覧」(500社) A列1行目 ア社 A列2行目 イ社 A列3行目 ウ社 <出したい結果> (1)検索したい会社が、シート1上で何社登録があるか ア社→【答え:2社】 イ社→【答え:1社】 ウ社→【答え:2社】 (2)登録データ一覧上、検索したい会社が存在するか ア社→【答え:○】 イ社→【答え:○】 ウ社→【答え:○】 エ社→【答え:×】 ☆ーア社→【答え:○】 ウー☆社→【答え:○】 よろしくお願いします。

  • 数学のとき方を教えてください。

    二次関数y=axx+bx+cのグラフは、2点(5,7)、 (0,12)を通り、頂点は直線y=x上にあるという。このとき、係数が整数であるのは a=ア b=イ c=ウ である。 アイウに当てはまるものを求めよ。 という問題ですがとき方を教えてください。 アイウの答えは アは1 イは-6 ウは12です。 ちなみに一番上のy=axx+bx+cのxx(エックス)はエックスの2乗を表しています。 よろしくお願いします。

  • 正規表現で一部の語尾を否定した条件を作りたい

    いつも大変お世話になっております。 PHP環境にて、以下のようなことで困っております。 元の文章($bunshou)の中に半角全角に関わらずカタカナの「アイウ」という文字列があり、 それを「あいう」に変換したい場合、 eregi_replace ("(ア|ア)+(イ|イ)+(ウ|ウ)","あいう", $bunshou); とすると、変更できたのですが、 もし、「アイウエ」、「アイウイア」と、『後ろに"エ"や"イア"が入っているときだけこの変換を行いたくない』時はどのように書けばよいのでしょうか。 つまり、以下のような条件です。 1.アイウ→「あいう」に変換したい 2.アイウお→「あいうお」と表示したい 3.アイウエ→変換したくない 4.アイウイア→変換したくない 上記の1~3までを、または1~4全てを一度に実効したい場合、どのように正規表現で書けばよいか教えて頂けますと大変たすかります。 よろしくおねがいします。

    • ベストアンサー
    • PHP
  • Ruby1.9で全角文字を半角文字にうまく変換できません。

    Ruby1.9で全角文字を半角文字にうまく変換できません。 英数字までは以下のロジックでうまく出来たのですが、カナが正しく変換されません。 何か良い知恵をどうかご教示のほどお願いいたします。 ※★→←★の間の文字は半角カナです(ブラウザ上全角カナとなってしまうため、便宜上補足しました)。 moji = "イあ1Aa" moji.tr('a-zA-Z0-9ア-ン', 'a-zA-Z0-9★→ア-ン←★') 結果:★→ウ←★あ1Aa 何故か半角のイではなく半角のウとなってしまう。    ※アの場合のみ正しく半角のアに変換される。

    • ベストアンサー
    • Ruby
  • Accessのクエリ

    下記のようなテーブルがあります フィールド 利用者 利用日 ア支店  イ支店  ウ支店         Aさん  1/1 たまご   りんご  みかん         Bさん  1/3 りんご   トマト   たまご         Cさん  1/3 ねぎ    たまご  いも クエリ等で、各支店のいずれかで「たまご」を購入した利用者を抽出したい場合 どのように設定したらよいでしょうか? もちろん、各支店のいずれでも「たまご」を購入していない利用者は抽出されないように。 クエリで、ア支店の抽出条件に「たまご」と入れ、イ支店とウ支店にor条件(またはの所) を入れるとア支店の条件が優先されてしまいます。 Access勉強中のものです。ご教授お願いします。