Я пытаюсь определить, какие учащиеся имеют право на повышение по службе, проверяя, сколько классов они посетили по отношению к известному количеству классов, и добавляют ли они право на повышение в последнем значении каждой из соответствующих строк.
Моя конечная цель - сравнить общие классы каждого человека и сравнить их с требованиями для каждой акции. Каждое число ниже - это количество времени в классе на этом уровне, прежде чем они имеют право на повышение. Я еще не пытался получить другие уровни пояса. Я только что пытался заставить работать Белый пояс - желтый пояс.
- Желтый пояс 12 классов
- Оранжевый пояс 48 классов
- Зеленый пояс 64 класса
- Фиолетовый Пояс 144 Классов
- Иккю 96 Классов
- Никю 96 Классов
- Санкю 96 Классов
- Шодан 192 Классов
Вот код ....
' RUN QUERY
Access.ExecQuery("SELECT COUNT(StudentID) as TotalClasses, FirstName, LastName FROM Attend GROUP BY FirstName, LastName")
' REPORT & ABORT ON ERRORS
If NoErrors(True) = False Then End
Access.DBDT.Columns.Add("PromotionStatus", GetType(System.String))
For Each row As DataRow In Access.DBDT.Rows
For i = 0 To Access.DBDT.Rows.Count - 1
If (row.Field(Of Integer)(0)) > 12 Then
Access.DBDT.Rows(i)("PromotionStatus") = "Eligible for Yellow Belt"
End If
Next
Next
' FILL DATAGRID
dgvTestDue.DataSource = Access.DBDT
@ JayV Я попробовал код, который вы разместили, и он отлично работал для тех, у кого более 12 классов. Затем я попытался использовать это для обработки остального времени в соответствии с требованиями класса / класса, и он проигнорировал все после первого If и не обработал ни одного из ElseIf.
Вот то, что я пробовал, но не не работает ....
If (row.Field(Of Integer)("TotalClasses")) > 12 Then
row("PromotionStatus") = "Eligible for Yellow Belt"
ElseIf (row.Field(Of Integer)("TotalClasses")) > 48 Then
row("PromotionStatus") = "Eligible for Yellow Belt"
ElseIf (row.Field(Of Integer)("TotalClasses")) > 108 Then
row("PromotionStatus") = "Eligible for Green Belt"
ElseIf (row.Field(Of Integer)("TotalClasses")) > 252 Then
row("PromotionStatus") = "Eligible for Purple Belt"
ElseIf (row.Field(Of Integer)("TotalClasses")) > 348 Then
row("PromotionStatus") = "Eligible for Ikkyu"
ElseIf (row.Field(Of Integer)("TotalClasses")) > 444 Then
row("PromotionStatus") = "Eligible for Nikyu"
ElseIf (row.Field(Of Integer)("TotalClasses")) > 540 Then
row("PromotionStatus") = "Eligible for Sankyu"
ElseIf (row.Field(Of Integer)("TotalClasses")) > 636 Then
row("PromotionStatus") = "Eligible for Shodan"
ElseIf (row.Field(Of Integer)("TotalClasses")) > 780 Then
row("PromotionStatus") = "Eligible for Nidan"
End If
и это был единственный способ заставить его работать. Есть ли более простой / более эффективный способ и почему ElseIf не сработал?
If (row.Field(Of Integer)("TotalClasses")) > 12 Then
row("PromotionStatus") = "Eligible for Yellow Belt"
End If
If (row.Field(Of Integer)("TotalClasses")) > 48 Then
row("PromotionStatus") = "Eligible for Orange Belt"
End If
If (row.Field(Of Integer)("TotalClasses")) > 108 Then
row("PromotionStatus") = "Eligible for Green Belt"
End If
If (row.Field(Of Integer)("TotalClasses")) > 252 Then
row("PromotionStatus") = "Eligible for Purple Belt"
End If
If (row.Field(Of Integer)("TotalClasses")) > 348 Then
row("PromotionStatus") = "Eligible for Ikkyu"
End If
If (row.Field(Of Integer)("TotalClasses")) > 444 Then
row("PromotionStatus") = "Eligible for Nikyu"
End If
If (row.Field(Of Integer)("TotalClasses")) > 540 Then
row("PromotionStatus") = "Eligible for Sankyu"
End If
If (row.Field(Of Integer)("TotalClasses")) > 636 Then
row("PromotionStatus") = "Eligible for Shodan"
End If
Извините за следующий вопрос после того, как я отметил исходное сообщение. Я могу задать это в отдельном вопросе, если вы хотите, чтобы я.