プロが教えるわが家の防犯対策術!

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

A 回答 (3件)

少々大げさかもしれませんが、文字列の類似度を表す、レーベンシュタイン距離というのを使うと良いかもしれません。

ご参考まで。
http://oshiete.goo.ne.jp/qa/6060346.html
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/02/11 12:02

レコードの照合キーがあれば、クエリで



照合A:[テーブルA].[フィールドA]
照合B:[テーブルB].[フィールドB]
結果:ocrcomp([照合A],[照合B])

ocrcomp関数を自作する。
引数2つ取得して、その機能要件にあうようロジックを作成、
結果フラグを返す。
サイズが大きい方で1文字ずつループ、か
マスタ側基準で1文字ずつループ、でもいいでしょう。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/02/11 12:01

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

上記のようなファンクションを作って、クエリから指定したらいかがでしょうか?
(普通に使うためには長さが違うときの処理も考えておかなくてはいけないけど。)
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/02/11 12:00

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