Делай пока l oop виснет - PullRequest
       4

Делай пока l oop виснет

1 голос
/ 21 марта 2020

l oop ниже зависает, если вход заполняет условие Do ... While.

  1. Этот код предназначен для первой проверки, введен ли код продукта в поле со списком ( Я! Combo_Product_number) существует в поле кода продукта запроса Q_compliant_FCM_EU.

  2. Если он существует, он проверяется на соответствие. Продукт является совместимым, если все его PURE_QP1 (который может быть больше одного для конкретного продукта) найден в поле PURE_QP1 T_DOSSIER_FPL. Если хотя бы один из них не найден, он не соответствует требованиям.

Private Sub Command455_Click()
Dim db As DAO.Database
Dim rst As Recordset
Dim rst1 As Recordset

If Nz(Me!Combo_Product_number) <> "" Then
   Set db = CurrentDb
   Set rst = db.OpenRecordset("Q_compliant_FCM_EU", dbOpenDynaset)
   Set rst1 = db.OpenRecordset("T_DOSSIER_FPL", dbOpenDynaset)

   rst.FindFirst "[PRODUCT_CODE] = '" & Me!Combo_Product_number & "'"
   If Not rst.NoMatch Then

       Do While Not rst1.EOF

        rst1.FindFirst "[PURE_QP1] = '" & rst.Fields("PURE_QP1") & "'"

        If Not rst1.NoMatch Then
            rst1.MoveNext
        Else
            MsgBox ("Product code is NOT compliant to FPL")
            Exit Sub
        End If

       Loop

       MsgBox ("Product code is compliant to FPL")

   Else
       MsgBox ("Product code is not available")
   End If

End If

End Sub

Что не так с приведенным выше кодом?

1 Ответ

1 голос
/ 21 марта 2020

Используйте DLookup для таких простых задач, как:

Dim PURE_QP1 As Variant

If Nz(Me!Combo_Product_number) <> "" Then

    PURE_QP1 = DLookup("[PURE_QP1]", "[Q_compliant_FCM_EU]", "[PRODUCT_CODE] = '" & Me!Combo_Product_number & "'")
    If IsNull(PURE_QP1) Then
        MsgBox ("Product code is not available")
    Else
        If IsNull(DLookup("[ID field of T_DOSSIER_FPL]", "[T_DOSSIER_FPL]", "[PURE_QP1] = '" & PURE_QP1 & "'")
            MsgBox ("Product code is NOT compliant to FPL")
        End If
    End If

End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...