0

私はこれを達成しようとしています。

従来の ASP Web サイトを介して msAccess2000 データベースから電話番号を検索しています。

同じ電話番号を次のいずれかとしてデータベースに格納できます。

(212) 212-2122
212)2122122
2122122122
212-212-2122
212-2122122

他にもたくさんの組み合わせがあります。

理想的には、私は次のようなことをします

strWhere ="Where replace(replace(Phone,'(',''),'-','') = '" & replace(replace(strPhone,"(",""),"-","") & "'"

しかし、MS ACCESS では (少なくとも私のバージョンでは) 置換機能をリモートで呼び出すことはできません。

これにより、考えられる1つの選択肢が残ります。置き換えられたすべての組み合わせを反復処理する関数を作成し、次のようにクエリに追加します。

 strWhere ="Where Phone in (" & PhoneReplace(strPhone) & ");"

この関数は、すべての組み合わせをこの形式で含む文字列を生成する必要があります。'2122122122','(2122122122','(212)2122122',......

その関数をどのように書くのが最善ですか?

もっと良いアイデアがありますか?

4

1 に答える 1

0

約束はありませんが、Bing-Fu がReplaceクエリに機能を追加するためにこれを入手しました ( tech-archive.netから)

新しいモジュールを作成します。

Function ReplaceText(StringIn as String) as String 
Dim NewString as String 
NewString = Replace(StringIn,"xyz","abc") 
ReplaceText = NewString 
End function 

クエリから呼び出します。

ChangedText:ReplaceText([FieldName]) 

もう 1 つの方法はLIKE、ワイルドカードをどこにでも使用して配置することです。これにより、任意の形式を入力でき、値に常に 10 個の数字が含まれ、検索基準に 10 個の数字が含まれていると仮定すると、有効な一致のみが見つかります。

where Phone like '%2%1%2%2%1%2%2%1%2%2%'

また、テーブル内のレコードが非常に少ないため、パフォーマンスの違いに気付くことなく、テーブル全体を取得してアプリでフィルター処理を行うこともできます。

于 2013-07-03T23:14:24.013 に答える