Создание пороговых значений в форме окон на основе значений набора данных - PullRequest
0 голосов
/ 26 апреля 2018

Обновление, я пытался понять идею @Plutonix, но я не смог реализовать ее на практике, поэтому не смог достичь решения моей проблемы.

Может кто-нибудь помочь мне с реализацией идеи @Plutonix? или любая другая идея, которая приведет к той же цели.

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

----------------------------- // ---------------- ------------------

Я создаю приложение для Windows с базой данных доступа.

Эта база данных доступа содержит 5 столбцов и 40 строк.

Первый столбец - это идентификатор строки, второй столбец - имя человека, а остальные 3 столбца - с 1 по 25.

В моей форме моя цель - иметь коробку с именем человека и меньшие коробки внутри с оценкой, и я хочу, чтобы у этих коробок был порог, который заставляет их менять цвет спины в зависимости от оценки. Это все легко сделать, и я сделал первые 2 поля с утверждениями if, основанными на значении, найденном в текстовом поле с оценкой.

Моя проблема в том, что есть 40 строк, это означает, что мне придется сделать несколько операторов if с несколькими условиями для КАЖДОГО из студентов, и это приведет к 120 наборам кода.

Теперь ... имейте в виду, я обычно не программист, поэтому мои технические знания ограничены, но как мне проще определить пороги для всего моего набора данных, учитывая, что пороги одинаковы для всех ? Я не хочу делать оператор if для каждого порога / столбца / человека.

Вот как я это делаю сейчас:

If (Me.PersonBox1.Text < 17) Then

        Me.Contract2.BackColor = Color.Crimson
        Me.Label4.BackColor = Color.Crimson
        Me.TextBox4.ForeColor = Color.White
        Me.Label5.BackColor = Color.Crimson
        Me.TextBox4.BackColor = Color.Crimson

    ElseIf (Me.PersonBox1.Text>= 17 And Me.TextBox1.Text <= 18) Then

        Me.Contract2.BackColor = Color.Orange
        Me.Label4.BackColor = Color.Orange
        Me.TextBox4.ForeColor = Color.White
        Me.Label5.BackColor = Color.Orange
        Me.TextBox4.BackColor = Color.Orange

    ElseIf (Me.PersonBox1.Text >= 19 And Me.TextBox1.Text <= 20) Then

        Me.Contract2.BackColor = Color.Gold
        Me.Label4.BackColor = Color.Orange
        Me.TextBox4.ForeColor = Color.White
        Me.Label5.BackColor = Color.Gold
        Me.TextBox4.BackColor = Color.Gold

    ElseIf (Me.PersonBox1.Text >= 21 And Me.TextBox1.Text <= 22) Then

        Me.Contract2.BackColor = Color.LawnGreen
        Me.TextBox4.ForeColor = Color.White
        Me.Label5.BackColor = Color.LawnGreen
        Me.TextBox4.BackColor = Color.LawnGreen

    ElseIf (Me.PersonBox1.Text > 22) Then

        Me.Contract2.BackColor = Color.LimeGreen
        Me.TextBox4.ForeColor = Color.White
        Me.Label5.BackColor = Color.LimeGreen
        Me.TextBox4.BackColor = Color.LimeGreen
        Me.Label5.ForeColor = Color.White


    End If

Теперь я не хочу повторять это по 120 раз на каждого учащегося в колонке, так что теперь мой разум толкает меня вот так:

Dim Var_OStatus As Integer
    Dim Var_SlaAch As Integer
    Dim Var_Com As Integer
    Dim Var_Part As Integer
    Dim Var_ContImp As Integer
    Dim Var_OStab As Integer
    Dim Var_PersonID As Integer
    Dim table As DataTable
    Dim row As DataRow
    Dim column As DataColumn
    For Each table In Contract_ManagementDataSet3.Tables
        For Each row In table.Rows
            For Each column In table.Columns
                Var_OStatus = Contract_ManagementDataSet3.Tables(0).Rows(0).ToString

                MsgBox("test   " + Var_OStatus.ToString())
            Next column
        Next row
    Next table

Я думаю, что это может быть путь, но я сейчас совершенно потерян.

Любые идеи будут высоко оценены.

Пример панели инструментов:

Каждый квадрат будет менять свой цвет в соответствии со значениями в нем на основе общего порога:

enter image description here

Привет

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