Доступ к справке кода функции поиска vba - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть очень элементарные знания vba, и я очень запутался в каком-то коде, который мне дали для выполнения рутинных задач. Я уверен, что когда кто-то смотрит на это, он либо видит, что я все испортил, либо упускаю что-то (или некоторые вещи), совершенно очевидное.

У меня есть справочная таблица почтовых индексов, которые распределены по области на основе внутренних групп моей организации. В некоторых случаях почтовые индексы, отправленные внешними клиентами, не «сопоставимы» с вышеуказанным «поиском по почтовому индексу». Мне передали какой-то старый код, который предполагает использование Района на основе похожих известных почтовых индексов; оригинальный код не работает, а мой обновленный код все еще не работает.

Теоретически код берет поле почтового индекса, избавляется от пробелов, затем берет первые 3 символа и сопоставляет их со вторым поиском, чтобы назначить «Площадь»; если он не найдет совпадения, он снова будет проходить по коду, но на этот раз с первыми 4 символами и т. д., пока не получит 7 символов, после чего он выделяет область «Неверный почтовый индекс».

Второй поисковый запрос, упомянутый выше, был построен, поэтому все известные почтовые индексы сокращены до первых 3 символов; все, которые соответствуют одной области, остаются как 3 символа, а все остальные изменяются на 4 символа; все из них, которые соответствуют одной области, остаются как 4 символа, а те, которые не исправлены, до 5 символов и так далее, пока все почтовые индексы от 3 до 7 символов каждый не будут иметь 1 область.

Я обновил имена полей и таблиц (поскольку некоторые поля больше не существуют)

Function FindArea(PCD As String) As String

Dim rs As DAO.Recordset
Dim char As String
Dim i As Integer
Dim NEW_AREAlookup As String

i = 3

Do While i < 8

On Error GoTo FindArea_Err

char = Left(Replace([PCD], " ", ""), i)

Set rs = CurrentDb.OpenRecordset("SELECT plu." & NEW_AREAlookup & " FROM PCode_LU plu " & _
                    "WHERE plu.CharCount = " & i & " " & _
                    "AND plu.PartPCode = '" & char & "'", dbOpenDynaset)

If rs.RecordCount > 0 Then
    FindArea = rs.Fields(NEW_AREAlookup)
    GoTo FindArea_Exit
Else
    If i = 7 Then
        FindArea = "No Area / incorrect postcode"
        GoTo FindArea_Exit
    End If

    i = i + 1
    Set rs = Nothing
End If

Loop

FindArea_Err:
    If Err.Number = 3052 Then
        Set rs = Nothing
        Resume Next
    End If

FindArea_Exit:
    Set rs = Nothing
    Exit Function

End Function
...