• ベストアンサー

ACCESSのフィールドデータの照合について

テーブルAのフィールドAとテーブルBのフィールドBの文字をAを基準に1文字づつ全文字を照合しアンマッチ文字が3文字以上発生したら-1を1及び2文字発生は1を全て照合OKなら数字の0をクエリで行いたいのですが・・・ 最大21文字照合となります。 テーブルBのデータは手書文字をOCR変換した物でACCESS2000のマスターデータと照合しています。

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

  • ベストアンサー
  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.1

function CompareStrings(strA,strB) as integer comparestrings = 0 for i = 0 to len(strA)-1 if mid(stra,i,1) <> mid(strb,i,1) then comparestrings = comparestrings + 1 next i end function 上記のようなファンクションを作って、クエリから指定したらいかがでしょうか? (普通に使うためには長さが違うときの処理も考えておかなくてはいけないけど。)

spkyouto
質問者

お礼

お礼が遅くなり申し訳ありません。 ループ処理をクエリで指定することにより出来ました。 ありがとうございます。

その他の回答 (2)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.3

少々大げさかもしれませんが、文字列の類似度を表す、レーベンシュタイン距離というのを使うと良いかもしれません。ご参考まで。 http://okwave.jp/qa/q6060346.html

spkyouto
質問者

お礼

決算処理でお礼が遅くなり申し訳ありません。 レーベンシュタイン距離初めて知りました。 ありがとうございます。 又、よろしくお願いします。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.2

レコードの照合キーがあれば、クエリで 照合A:[テーブルA].[フィールドA] 照合B:[テーブルB].[フィールドB] 結果:ocrcomp([照合A],[照合B]) ocrcomp関数を自作する。 引数2つ取得して、その機能要件にあうようロジックを作成、 結果フラグを返す。 サイズが大きい方で1文字ずつループ、か マスタ側基準で1文字ずつループ、でもいいでしょう。

spkyouto
質問者

お礼

決算処理でお礼が遅くなり申し訳ありません。 ループ処理をクエリで指定して出来ました。 又、宜しくお願いします。

関連するQ&A

  • ACCESS テーブル同士の照合

    テーブルAとテーブルBの照合がしたいのですが (AとBはフィールド名、データ型等全てが同じ) 項目が多く、クエリーの結合プロパティで一つ一つ設定するのが面倒です AとBを単純に照合出来る方法は無いでしょうか?

  • アクセスでデータを足すには、また、引くには?

    アクセスを使用していて、テーブルAにあるデータに、テーブルBにあるデータを足したいと思っています。 それぞれデータは”名前”のようなフィールドで、ひとつにまとめたいのですがクエリーでの表現が分かりません。SQLビューのようなやり方でも構いませんので、是非お願い致します。 また、もう一つですが、テーブルAにあるデータに、テーブルBにあるデータを引きたい思っています。こちらも”名前”のようなフィールドで、同じレコードは省きたいと思っております。 よろしくお願い致します。

  • Accessで連続データってできますか?

    Aテーブル(データベース)からBテーブルに必要なレコードを抽出して、Bテーブルで編集しています。 Bテーブルで編集したレコードをCテーブルに移動する際に、連続データのフィールドが必要になったので、テーブルのオートナンバー型フィールドを一つ追加しましたが、うまくいきません。 追加クエリでB→Cに移動させるんですが、キー違反がでてクエリが動きません。 できれば、クエリで連続データを作成して、Cテーブルに追加させたいんですが、クエリで連続データって作れるものなのでしょうか?

  • ACCESSのクエリで表示されるデータについて

    クエリで表示されるデータの範囲について教えてください。 <状況例> 例えばなのですが、取引先会社の管理データベースとして「テーブルA」と「テーブルB」があったとします。 「テーブルA]のフィールドは「会社ID」、「会社名」、「住所」とします。 「テーブルB]のフィールドは「連絡先ID」、「会社ID」、「担当者名」とします。 そして、「会社ID」をリレーションシップで繋いで、クエリで「テーブルA」「テーブルB」の全てのフィールドを表示したとします。 この時、「テーブルA」にデータが5つあり、「テーブルB」にはデータが2つしかなく、結果リレーションシップを通じて対をなすデータが2つしかない場合には、クエリでは2つしかデータが表示されないと思います。 <質問> クエリではリレーションシップで対をなさないデータは無効となるようですが、対をなさないデータも全てクエリで表示する方法はないのでしょうか。 上記例でいうと、「テーブルA」のデータ5件全てについて表示させたいのですが。もちろん、「テーブルA」のデータ中対をなしていないものについては、「テーブルB」のフィールド内容については「空白」での表示となりますが。

  • Accessで BテーブルのフィールドをAフールドに書き換えたい。

    初心者ですが宜しくお願い致します。 Aテーブル →[氏名],[名前] Bテーブル →[氏名],[結婚後氏名] (1)上のようなテーブルがあります。クエリで、AテーブルとBテーブルの[氏名]フィールドをキーにしてリレーションを組み、A,Bテーブルのフィールド全てを表示させます。 (2)(1)で抽出されたデータだけ、Aテーブルの[氏名]フィールドをBテーブルの[結婚後氏名]フィールドに書き換えたいのですが・・・・ なにかよい方法はありますでしょうか。 詳しい方、教えてください。 宜しくお願い致します。

  • Accessで重複したデータを削除したい。

    AテーブルとBテーブルがあります。AテーブルとBテーブルのフィールド名は同じですがデータはそれぞれ違います。AテーブルとBテーブルにあるデータを一つにまとめたいのですが、その際に、 「AテーブルとBテーブルの間で重複したデータがあるのでそれを削除したい。」のですが、手順としてどのような方法がスマートなのでしょうか。 (1)BテーブルをAテーブルに追加クエリで追加する。 (2)Aテーブルで重複クエリを作成し、重複しているデータを表示する。 ・・・・とここまで考えたのですが重複しているデータをどのように削除していけばいいかわかりません・・・。根本的にやり方が間違っているのでしょうか。どなたか詳しい方、いい方法を教えてください。よろしくお願い致します。

  • アクセス2012でのデータ結合について

    データA.csv フィールド1,フィールド2(100件) データB.csv フィールド1,フィールド2,フィールド3(100件) 上記データを データA.csv+データB.csv フィールド1,フィールド2,フィールド1,フィールド2,フィールド3(100件) としたいのですが 作成>クエリデザイン>テーブルの表示> データA データB 追加 フィールドにすべての追加>実行 上記作業をすると 結合したデータ100件が10000件作成されてしまいます。 データA.csv フィールド1,フィールド2(100件) データB.csv フィールド1,フィールド2,フィールド3(100件) 上記データを データA.csv+データB.csv フィールド1,フィールド2,フィールド1,フィールド2,フィールド3(100件) としたいのですが クエリ作成の アドバイス頂けたら助かります。 宜しくお願いします。

  • Access フィールド内容をコピーしたい

    Accessでの質問です。 テーブル内にAとBのフィールドがあります。Aの内容をそっくりBのフィールドにコピーしたいのです。 クエリを使うのだろうと思いますが、本を読んでも良く分かりませんでした。 お教えください。

  • キーのフィールドが最大値の他フィールドのデータ抽出

    下記のようなテーブルがあったとします。 ----------------------  (1) | (2) | (3)  ----------------------  A | 3 | あ  A | 1 | い  A | 5 | う  B | 3 | え  B | 2 | お ---------------------- フィールド(1)がグループで、それぞれAグループ、 Bグループとします。 このとき、それぞれのグループ内のフィールド(2)が 最大のレコードのフィールド(3)データを抽出したいのですが、 どのようにすればよいでしょうか? 上記の例で言うと、 ----------------------  (1) | (2) | (3)  ----------------------  A | 5 | う  B | 3 | え ---------------------- という結果を得たいのですが・・・

  • ACCESSのフィールドの更新

    マイクロソフトACCESSフォームAでテーブルBのCフィールドの更新は出来るのですが、フォームDから連結でテーブルBのCフィールドの更新が出来ません。(同じようにして2個作成したシステムのうち1個は出来たのですが、もう1個がどうしても出来ません:テーブル,クエリ,フサブフォーム,フォームの違いを捜しているのですが見当たりません。)

専門家に質問してみよう