これには解決策が必要です。VB6 から Access に移行するためのコードは以下のとおりです。私は VB6 の文字を比較する機能を持っています。私は VB6 の初心者ユーザーであり、主に VBA プラットフォームで作業しています。UDTを使用せずにタイプミスを文字ごとにチェックするために、MS Accessでクラスまたはより良い方法をセットアップする必要があります。
配列としての Mytypolist は、次のデータセットを参照します。
上記のデータは、文字が単語内でタイプミスされたかどうかを比較するために使用されます。ケベックと入力する意味ではなく、Auebec のように A を使用すると、関心のあるクラスターは QWA になります。WESAQ; AQWSZ; または近接に基づく標準英語 Qwerty キーボードのその他の Q 配置。これは Q だけでなく、大文字と小文字を問わずアルファベットのセット全体に適用されるため、c にはタイプミスの可能性のある独自のクラスターなどがあります。
UDT (ユーザー定義型) の VB6 セットアップ: 'タイプミスの UDT 型を宣言
Public Type Mytypos
Rightrkey As String * 1
PossibleKey As String * 8
End Type
'declare arrays and variable for master list and typos
Public Masterlist() As String
Public Mytypolist(26) As Mytypos
Public Matchkey As Mytypos
次の関数は 2 つの単語を比較します。currentpct スコアを計算して類似性を割り当てます。
Public Function CompareCharacters(ByRef MasterWord As String, _
ByRef Checkword As String, ByRef CurrentPCT As Double, _
ByRef WordVal As Long) As Double
'define function variables
Dim ChrCount As Long
Dim ChrValue As Long
Dim loop1 As Long
Dim loop2 As Long
'define the letter values
If Len(MasterWord) > Len(Checkword) Then
ChrCount = Len(MasterWord) * 2
Else
ChrCount = Len(Checkword) * 2
End If
ChrValue = 1 / ChrCount
'say CURRENT PCT has a value of 10%
'check each letter for a match in current word position
For loop1 = 1 To Len(Checkword)
'check for typo errors (key proximity)
For loop2 = 0 To UBound(Mytypolist)
Matchkey = Mytypolist(loop2)
'if indexkey = letter in masterword
If Matchkey.Rightrkey = Mid(MasterWord, loop1, 1) Then
'does the letter in the checkword exist in the proximity keylist
If InStr(1, Matchkey.PossibleKey, Mid(Checkword, loop1, 1), vbTextCompare) > 0 Then
'value for letter found in proximity keylist
CurrentPCT = CurrentPCT + ChrValue
End If
Exit For
End If
Next loop2
Next loop1
CompareCharacters = CurrentPCT
End Function
コンパイラの問題を発生させない可能性のある配列/クラスのソリューションを投稿していただければ(VBAの文字列UDTが問題です)。今すぐチェックしてください!