MsgBox не появляется при передаче свойства RecordCount - PullRequest
0 голосов
/ 11 февраля 2019

Редактировать: Проблема была On Error Resume Next, подавляющая ошибки в OpenRecordset, при этом для Variant было задано значение Nothing.OpenRecordset не удалось из-за имен столбцов с ошибками, и указание Тип , когда Тип по умолчанию определяется по доверенности как связанная таблица.

Решение : закомментировать / удалить On Error Resume Next, чтобы вызвать ошибки.Исправьте орфографические ошибки в именах столбцов.Не указывайте тип (оставьте поле пустым), когда Запрос из связанной таблицы ( Тип автоматически становится Dynaset для запросов из связанных таблиц.

В определенном разделе кода я пытаюсь отобразитьколичество записей в наборе записей (в основном для целей отладки). Я наткнулся на то, что я считаю уникальной ошибкой. Код выглядит следующим образом:

specsVariableTempTableName = "specs_variable_" & CStr(Me.OpFormOpRecordID) & "_temp"

specItemsQuery = "SELECT [Item], [Document #], [Item Description], [SubItems], [Attribute], [Spec Characteristics] FROM [tbl_forms] WHERE [Document #] = '" & Me![Form #] & "' AND [Part #] = '" & Me![Part Number] & "';"

Set db_source = CurrentDb

If IsNull(DLookup("Name", "MSysObjects", "Name='" & specsVariableTempTableName & "' And Type In (1,4,6)")) Then
        'Check for existing temporary spec table
        'Create one if not
        MsgBox ("No temporary table " & specsVariableTempTableName)
        Set specItemsRecordSet = db_source.OpenRecordset(specItemsQuery, , dbFailOnError).Clone

        MsgBox (specItemsRecordSet.RecordCount & " Records")
        MsgBox ("What the f***")


        If Not (specItemsRecordSet.EOF And specItemsRecordSet.BOF) Then
            'If the result set is not empty, go to first entry
            specItemsRecordSet.MoveFirst
            With specItemsRecordSet
                MsgBox (.RecordCount)
            End With
        Else
            MsgBox ("No Specs found for given part number and document number")
        End If


        db_source.Execute "SELECT [Document #], [Part #], [ParentItem], [SubItem], [Nominal], [LSL], [USL], [UOM] INTO " & specsVariableTempTableName & " FROM [Specs_Variable] WHERE (([Specs_Variable]![Document #] = '" & Me![Form #] & "') AND ([Specs_Variable]![Part #] = '" & Me![Part Number] & "'));", dbFailOnError
    End If

Соответствующая строка - MsgBox (specItemsRecordSet.RecordCount & "Records"). Строки MsgBox до и после этой строки отображают MsgBox, и я должен нажать OK, чтобы закрыть его. Однако эта конкретная строка не отображает MsgBox, код не останавливается, он просто переходит к следующей строкекак если бы кода вообще не было.

Я пытался переименовать таблицы в запросе, я пытался .MoveLast перед вызовом .RecordCount. Даже MsgBox в блоке WITH не отображается. Iможно было бы ожидать, что если бы запрос не дал результатов, я бы получил 0, Null или Error при попытке показать в MsgBox, ноt MsgBox все равно будет отображаться и потребует действий пользователя для продолжения.

...