2012-05-14 2 views
0
+----------+------------+------+------+--------------+---------+---------+ 
|   | SUBJ | MIN | MAX | RESULT | STATUS | PERCENT | 
|   +------------+------+------+--------------+---------+---------+ 
|   | Subj1  | 35 | 100 |  13 | FAIL | 13.00% | 
|EXAM NAME | Subj2  | 35 | 100 |  63 | PASS | 63.00% | 
|   | Subj3  | 35 | 100 |  35 | PASS | 35.00% | 
|   +------------+------+------+--------------+---------+---------+ 
|   | Total  | 105 | 300 |  111 | PASS | 37.00% | 
+----------+------------+------+------+--------------+---------+---------+ 

Это мой отчет отчет зритель format.The SubTotal строка подсчитывает итог всего вышесказанного column.Every вещь хорошо. Но в статусе столбец показывает пропуск. Я хочу, чтобы он показывал ошибку, если в столбце состояния есть один . Я генерирую статус, если результат < мин. Тогда это сбой, иначе это пропуск. Теперь, как изменить строку SubTotal ниже в зависимости от состояния. И есть ли способ показать строку Промежуточная строка непосредственно из базы данных. Любое предложение.SumTotal в ReportViewer

ответ

0

Самый простой способ сделать это - использовать пользовательский код (щелкните правой кнопкой мыши не отображаемую область отчета, выберите «Свойства» и перейдите на вкладку «Код»). Вычислите оценку прохода/отказа в деталях, отобразите ее в группа сноска и сбросить его в заголовке группы:

Dim PassFail As String 

// Reset Pass or Fail status in group header 
Public Function ResetAndDisplayStatusTitle() AS String 
    PassFail = "PASS" // Initialise status to pass 
    ResetAndDisplayStatusTitle = "Status" 
End Function 

// Calculate pass/fail on each detail row and remember any fails 
Public Function CalculatePassFail() As String 
    Dim ThisResult As String 

    // Calculate whether this result is pass or fail 
    If Fields!Result.Value < Fields!Min.Value Then 
     ThisResult = "FAIL" 
    Else 
     ThisResult ="PASS" 
    End If 

    // Remember any failure as overall failure 
    If ThisResult = "FAIL" Then PassFail = "FAIL" 

    CalculatePassFail = ThisResult 
End Function 

Затем вы связываете в пользовательском коде для ваших клеток в таблице следующим образом:

в значении для столбца состояния в вашей группе заголовке вы положили :

=Code.ResetAndDisplayStatusTitle() 

В значении для столбца состояния в строке детализации вы поставите:

=Code.CalculatePassFail() 

В значении для столбца состояния в сноске группы вы положили:

=Code.PassFail 

Что касается получения подытога строка из базы данных непосредственно из базы данных, есть несколько способов в зависимости от того, какой результат вы после.

  • Присоедините строку подробных данных к подсчитываемой строке в вашем SQL (чтобы поля промежуточных итогов отображались в каждой строке набора данных) и используйте эти поля.
  • Опять же, использовать пользовательский код (но это, вероятно, слишком сложно для subtotalling)

Однако эти приемы только для странных обстоятельств и в целом нормальные вне коробки subtotalling может быть изменена на дайте результат, который вам нужен. Если есть что-то конкретное, которое вы хотите знать, вероятно, лучше всего объяснить проблему в отдельном вопросе, чтобы вопрос можно было решать индивидуально.

+0

Позвольте мне попробовать это – Aaraadhana

Смежные вопросы