Всплывающие формы не работают, перестают отображаться с малейшими изменениями в несвязанной форме - PullRequest
0 голосов
/ 02 апреля 2020

Я уверен, что делаю что-то очень глупое и просто не могу понять, что я делаю неправильно.

Контекст У меня есть 2 формы.

  1. Форма 1 (Загрузить): позволяет пользователям просматривать и загружать данные. Также проверяет на ошибки. Если есть ошибки, то открывается форма 2 (исправить ошибки)
  2. Форма 2 (исправить ошибки): показывает записи с ошибками и позволяет пользователю обновить неверные данные. Также проверяет на ошибки. Если есть ошибки, то она снова открывает форму 2 (исправить ошибки) с оставшимися ошибками.

Проблема Когда я внесу изменение в форму 2 (что-то такое же маленькое, как добавление пробела) пробел в строке), всплывающее окно формы 2 перестает отображаться.

код для формы 1

...Declarations...

'Import from excel
If Len(strFile) > 0 Then ' strPathFile = strPath & strFile
     DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, strTable, strPath, blnHasFieldNames 
End If


' Open data imported for checks
Set uDB = CurrentDb
Set rs_main = Nothing
Set rs_main = uDB.OpenRecordset("SELECT * FROM PROMO_DETAILS_ERROR_TABLE ORDER BY EVENT_NAME, ITEM_CODE, START_DATE")

' Checks
If Not (rs_main.EOF And rs_main.BOF) Then
    Do Until rs_main.EOF = True
    '....Multiple Checks like the one below...

    '''''''''''''''' Checks : No missing Status + Status matches list + test that there is only 1 status ''''''''''''''
            If IsNull(rs_main!Status) Then
                rs_main.Edit
                If IsNull(rs_main!ERROR_MSG) Then
                    rs_main!ERROR_MSG = "Missing Status."
                Else
                    rs_main!ERROR_MSG = rs_main!ERROR_MSG & vbNewLine & "Missing Status."
                End If
                rs_main!LAST_UPDATE = Now()
                rs_main.Update
            Else
                Set rs_status = uDB.OpenRecordset("SELECT VARIABLE_VALUE FROM AB_PROMO_APP_ALTERNATIVE_PARAMETER_REF_TABLE" & _
                                                        " WHERE VARIABLE = 'STATUS' AND VARIABLE_VALUE = '" & rs_main!Status & "'")
                If rs_status.EOF Then
                    rs_main.Edit
                    If IsNull(rs_main!ERROR_MSG) Then
                        rs_main!ERROR_MSG = "Incorrect Status."
                    Else
                        rs_main!ERROR_MSG = rs_main!ERROR_MSG & vbNewLine & "Incorrect Status."
                    End If
                    rs_main!LAST_UPDATE = Now()
                    rs_main.Update
                End If
            End If

            rs_status.Close
            Set rs_status = Nothing

    rs_main.MoveNext
    Loop

Else
   MsgBox "There are no records in the recordset."
End If

rs_main.Close 'Close the recordset
Set rs_main = Nothing 'Clean up

'....Some more declarations/ initializations...then the code to open form if there are no errors
 Set rs_main = uDB.OpenRecordset("SELECT COUNT(ERROR_MSG) AS COUNT_ERROR_MSG FROM PROMO_DETAILS_ERROR_TABLE WHERE ERROR_MSG IS NOT NULL")

If rs_main!COUNT_ERROR_MSG = 0 Then
        MsgBox "No Errors Found. Awesome!!!"
        'Replace_Promo_Flag = 0
        strSQL = "INSERT INTO AB_PROMO_APP_ALTERNATIVE_DETAILS_TABLE (BUSINESS_TERRITORY, INTERNATIONAL_KEY_ACCOUNT, EVENT_NAME, " & _
                "PROMOTION_FAMILY_NAME, START_DATE, END_DATE, VISIBILITY, STATUS, ITEM_CODE, CURRENCY_ID, BASE_PRICE,  DISCOUNT_VALUE, " & _
                " ADDITIONAL_DISCOUNT_VALUE, FREE_WEEKEND_FLAG, BOGO_FLAG, UNIQUE_ID, ITEM_COUNT, LAST_UPDATE, LAST_UPDATED_BY_USER, UPDATED_FLAG) " & _
                "SELECT BUSINESS_TERRITORY, INTERNATIONAL_KEY_ACCOUNT, EVENT_NAME, " & _
                "PROMOTION_FAMILY_NAME, START_DATE, END_DATE, VISIBILITY, STATUS, ITEM_CODE, CURRENCY_ID, BASE_PRICE,  DISCOUNT_VALUE, " & _
                " ADDITIONAL_DISCOUNT_VALUE, FREE_WEEKEND_FLAG, BOGO_FLAG, UNIQUE_ID, ITEM_COUNT, LAST_UPDATE, LAST_UPDATED_BY_USER, UPDATED_FLAG " & _
                " FROM PROMO_DETAILS_ERROR_TABLE"
        uDB.Execute strSQL
        strSQL = "DELETE * FROM PROMO_DETAILS_ERROR_TABLE"
        uDB.Execute strSQL
        Forms!PromoMainPageForm!TeradataSyncButton.Enabled = True
    Else
            DoCmd.Close acTable, "PROMO_DETAILS_ERROR_TABLE"
            DoCmd.Close acTable, "AB_PROMO_APP_ALTERNATIVE_DETAILS_TABLE"
            DoCmd.OpenForm ("PromoDetailsCorrectionForm")
End If

DoCmd.Close acTable, "PROMO_DETAILS_ERROR_TABLE"
DoCmd.Close acTable, "AB_PROMO_APP_ALTERNATIVE_DETAILS_TABLE"

uDB.Close
Set uDB = Nothing

End Sub

код для формы 2

' Exactly the same as Form 1 except open recordset only shows records with error instead of everything
Set dcDB = CurrentDb
Set rs_error_main = dcDB.OpenRecordset("SELECT * FROM PROMO_DETAILS_ERROR_TABLE WHERE ERROR_FLAG = -1 ORDER BY EVENT_NAME, ITEM_CODE, START_DATE, END_DATE")

' All checks same as Form 1

DoCmd.Close acTable, "PROMO_DETAILS_ERROR_TABLE"
DoCmd.Close acTable, "AB_PROMO_APP_ALTERNATIVE_DETAILS_TABLE"

dcDB.Close
Set dcDB = Nothing

End Sub

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