2013-08-26 5 views
-1

Я использую MS Access для администрирования базы данных. У меня есть специальные таблицы, содержащие разные отчеты. Я уже нашел аналогичный вопрос о stackoverflow и сделал мой reaserach по этой проблеме. Я стараюсь рисовать ряды в соответствии с условиями (Продолжительность < 20 Paint Beige, 2060 Red)Изменение цвета строки в соответствии с условием

Я использую VBasic. Это мой код.

Пожалуйста, дайте мне знать, что вы думаете. Большое спасибо за вашу помощь!

Sub ChangeBackType() 

    Me.Date.BackStyle = 1 
    Me.Cell.BackStyle = 1 
    Me.Maintenance_Category.BackStyle = 1 
    Me.Duration.BackStyle = 1 
    Me.Line_Description.BackStyle = 1 
    Me.Machine_Description.BackStyle = 1 
    Me.Station_Number.BackStyle = 1 
    Me.Fault_Description.BackStyle = 1 
    Me.GM.BackStyle = 1 
    Me.Remarks.BackStyle = 1 
    Me.Intervention.BackStyle = 1 
    Me.Technician_Name.BackStyle = 1 
    Me.Shop_Floor.BackStyle = 1 

End Sub 

Sub Paint_Rows_Red() 

«Такой же метод для других цветов

Me.Date.BackColor = RGB(255, 29, 29) 
    Me.Cell.BackColor = RGB(255, 29, 29) 
    Me.Maintenance_Category.BackColor = RGB(255, 29, 29) 
    Me.Duration.BackColor = RGB(255, 29, 29) 
    Me.Line_Description.BackColor = RGB(255, 29, 29) 
    Me.Machine_Description.BackColor = RGB(255, 29, 29) 
    Me.Station_Number.BackColor = RGB(255, 29, 29) 
    Me.Fault_Description.BackColor = RGB(255, 29, 29) 
    Me.Intervention.BackColor = RGB(255, 29, 29) 
    Me.GM.BackColor = RGB(255, 29, 29) 
    Me.Remarks.BackColor = RGB(255, 29, 29) 
    Me.Technician_Name.BackColor = RGB(255, 29, 29) 
    Me.Shop_Floor.BackColor = RGB(255, 29, 29) 

End Sub 

    Private Sub Report_Load() 


    ChangeBackType 
    Dim Test As String 

    Test = TestString2 

    TestString2 = Me!Duration.Value 
    TestString2 = FormatDateTime(TestString2, vbShortTime) 

    If TestString2 <= CDate("00:20") Then 

     Paint_Rows_Beige 

    ElseIf TestString2 > CDate("00:20") And TestString2 < CDate("00:60") Then 

     Paint_Rows_Orange 

    ElseIf TestString2 >= CDate("00:60") Then 

     Paint_Rows_Red 

    End If 

Я пытаюсь рисовать строки в соответствии с условиями указанных выше в докладе. С помощью этого кода я получаю только один цвет.

+0

В чем ваш вопрос в точности? Что работает и что не работает? –

+0

Я пытаюсь рисовать строки в соответствии с указанным выше условием в отчете. С помощью этого кода я получаю только один цвет. – Cuta

ответ

2

Когда вы открываете отчет/форму с несколькими строками, используемый вами код будет применяться только к первой строке, появляющейся в данных. Короче говоря, ваш код не будет работать.

Существует, однако, способ цвета строк по различным критериям с использованием условного форматирования.

+0

Когда вы говорите об условном форматировании, следует ли использовать макросы? – Cuta

+0

Нет, на самом деле вы можете выбрать несколько текстовых полей в строке (в режиме просмотра). Щелкните меню следующим образом: Инструменты проектирования формы> Формат> Условное форматирование. В доступе 2007 он ограничен только тремя условиями, но вы можете сделать больше, если у вас есть 2010. – Mudasser

+0

OK нашел способ вокруг него, единственная проблема теперь меняется. Длительность времени от HH: MM: формат SS до количества минут. – Cuta