Как посчитать количество & ldquo; Нет & rdquo; экземпляры в таблице с несколькими номерами в одной строке

Здесь найдено решение здесь . Агент Windows настроен на использование контейнеров Windows, а не контейнеров Linux.

1
задан June7 20 January 2019 в 01:29
поделиться

3 ответа

Вы можете использовать Заменить и старый трюк, чтобы построить выражение в вашем запросе:

NoCounts: (Len([Field1] & [Field2] & … & [FieldN]) - Len(Replace([Field1] & [Field2] & … & [FieldN]), "No", ""))) / Len("No")
0
ответ дан Gustav 20 January 2019 в 01:29
поделиться

Если бы это были поля типа Да / Нет со значениями -1/0, можно было бы построить вычисляемое поле, которое добавит все остальные поля.

SELECT tbl_CSRQA.*,
10-Abs(ClaimantAdded + DocsPhoneCall + InsdDriverVehInfo + LossInfo + TemplateCalNotes + 
EmailtoLiab + ReserveScreen + InsNamePhone + Clerical + AdditionalSteps) AS TotNo

FROM tbl_CSRQA

WHERE CustomerServiceRep=[forms]![frm_CSRErrorTracking]![CSRNameCB] 
AND ClaimDate Between #1/1/2019# And #1/31/2019#;

Поскольку это, очевидно, текстовые поля, одно выражение, вероятно, будет слишком длинным. Создайте вычисляемые поля с условным выражением для каждого поля, чтобы преобразовать их в 1 или 0, а затем укажите эти вычисленные поля в арифметическом выражении. В качестве альтернативы, создайте пользовательскую функцию VBA, которая будет возвращать количество No в каждой записи.

Теперь Sum или DSum вычисляемое поле TotNo.

0
ответ дан June7 20 January 2019 в 01:29
поделиться

Добавьте приведенную ниже функцию в стандартный модуль, затем в отчет =CountInstanceofNo()

Option Compare Text
Public Function CountInstanceofNo() As Long
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim fld As DAO.Field
    Dim counter As Long

    Set db = CurrentDb
    Set rs = db.OpenRecordset("Select ClaimantAdded, DocsPhoneCall, InsdDriverVehInfo,LossInfo,TemplateCalNotes,EmailtoLiab, ReserveScreen, InsNamePhone, Clerical, AdditionalSteps from tbl_CSRQA Where CustomerServiceRep='" & [forms]![frm_CSRErrorTracking]![CSRNameCB] & "' AND ClaimDate Between #1/1/2019# And #1/31/2019#", dbOpenDynaset)

   Do Until rs.EOF
        For Each fld In rs.Fields

                counter = counter + IIf(fld & "" = "No", 1, 0)

        Next
        rs.MoveNext
   Loop

    CountInstanceofNo = counter

    rs.Close
    Set rs = Nothing
    Set db = Nothing
End Function
.
0
ответ дан Santosh 20 January 2019 в 01:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: