Нет результатов в наборе записей - PullRequest
0 голосов
/ 28 мая 2019

У меня есть временная таблица, созданная из запроса. Из этой таблицы я выбираю элементы и размещаю их в определенном порядке для отображения в списке. Все прекрасно работает, пока я не попытаюсь добавить предложение where в свой оператор select.

Я хотел бы, чтобы при выполнении запроса, который не работает ниже, переменные возвращались как «0».

Я пытался сделать оператор if, который просто делает мою переменную "0", но я все еще получаю ту же ошибку "Нет текущей записи".

Приведенный ниже запрос работает нормально;

  strQuery = "SELECT * FROM " & currentTime & " Order By CVT, CVY, CVW, 
  AdjusterName"

Но когда я добавляю предложение where <= 1, я получаю сообщение об ошибке «Нет текущей записи». Второй запрос: </p>

  strQuery = "SELECT * FROM " & currentTime & " WHERE CVT <=1 Order By 
  CVT, CVY, CVW, AdjusterName"

Когда я запускаю этот второй запрос, я получаю сообщение об ошибке «Нет текущей записи». Здесь я бы хотел, чтобы вместо этого отображался ноль.

На всякий случай, вот и вся функция;

    If ClaimTypeCB = "MO" Then
        strQuery = "SELECT * FROM " & currentTime & " WHERE CVT <=1 Order 
        By CVT, CVY, CVW, AdjusterName"
    Else
        strQuery = "SELECT * FROM " & currentTime & " Order By CVT, CVY, 
        CVW, AdjusterName"
    End If
        Set daoQueryResult = db.OpenRecordset(strQuery)

        daoQueryResult.MoveLast
        intRecordCount = daoQueryResult.RecordCount
        daoQueryResult.MoveFirst

    If intRecordCount = 0 Then
        intCVT = 0
    End If

(В приведенном выше операторе If я попытался вставить оператор If, но он не сработал, и я все еще получаю ошибку «No Current Record».)

    If intRecordCount <> 0 Then
        With daoQueryResult
            Do While Not .EOF

                If IsNull(!CVT) Then
                    intCVT = 0
                Else
                    intCVT = !CVT
                End If

                If IsNull(!CVY) Then
                    intCVY = 0
                Else
                    intCVY = !CVY
                End If

                If IsNull(!CVW) Then
                    intCVW = 0
                Else
                    intCVW = (!CVW)
                End If

                AvailAdjList.AddItem !AdjusterName & "," & intCVT & "," & intCVY & "," & intCVW
                .MoveNext
            Loop
        End With
    End If

Я просто хочу, чтобы CVT возвращался как ноль, если он равен 0 или 1.

Ответы [ 2 ]

0 голосов
/ 28 мая 2019

Попробуйте этот запрос:

strQuery = "SELECT CVT, CVY, CVW, AdjusterName FROM " & currentTime & " WHERE CVT <= 1 Order By CVT, CVY, CVW, AdjusterName" _
         & " UNION ALL " _
         & "SELECT DISTINCT 0, NULL, NULL, NULL FROM " & currentTime & " WHERE NOT EXISTS " _
         & "(SELECT 1 FROM " & currentTime & " WHERE CVT <= 1)"

Используется UNION ALL, поэтому, если 1-й запрос не возвращает никаких строк, 2-й запрос вернет строку со значениями: 0, NULL, NULL, NULL
Надеюсь, у меня нет опечаток.

0 голосов
/ 28 мая 2019

После этой строки:

Set daoQueryResult = db.OpenRecordset(strQuery)

вам нужно проверить Recordset.EOF

With daoQueryResult
    If .EOF Then
        intRecordCount = 0
    Else
        .MoveLast
        intRecordCount = .RecordCount
        .MoveFirst
    End If
End With

Хотя из вашего кода вам, похоже, не нужно RecordCount.

Вы можете просто начать с Do While Not .EOF

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