Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
Khaker_tt
30 / 30 / 6
Регистрация: 24.11.2015
Сообщений: 330
Завершенные тесты: 1
#1

Получение интервала между двумя датами в DGV - Visual Basic .NET

10.09.2016, 17:12. Просмотров 274. Ответов 14
Метки нет (Все метки)

Уважаемые форумчане. не могу решить одну проблему. Проблема в том что сравнить двух дат и покрасит их тремя цветами на DGV. подробности на процедуре sub swet(). Заранее спасибо...
0
Вложения
Тип файла: rar primer_2.rar (131.5 Кб, 2 просмотров)
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.09.2016, 17:12
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Получение интервала между двумя датами в DGV (Visual Basic .NET):

Как вычислить разницу в годах между двумя датами?
Задачка школьного уровня но напрочь забыл(. Осложняется еще и тем, что...

Определить количество дней четвертого числа между двумя датами
Перед мной стоит задача определить сколько к примеру 4-тых чисел между датой N1...

Получение интервала метаданных из потока
Как получить название песни? Пытаюсь прочитать байт размера метаданных из...

Как вычислить разницу между датами
Господа подскажите в программе нужно узнать разницу времени между началом...

Вычислить количество дней между датами
Нужно вычислить количество дней между датами. Есть стандартные функции?

Определить количество полных недель и понедельников между заданными датами
Заданы две даты. Определить количество полных недель и понедельников между...

14
Yury Komar
Модератор
Эксперт .NET
2364 / 2169 / 346
Регистрация: 27.01.2014
Сообщений: 3,898
Завершенные тесты: 1
10.09.2016, 17:51 #2
Khaker_tt, по какому условию красить даты?
0
Khaker_tt
30 / 30 / 6
Регистрация: 24.11.2015
Сообщений: 330
Завершенные тесты: 1
10.09.2016, 20:59  [ТС] #3
Yury Komar, по условию окончание дата оплаты. то есть сравнит сегодняшний дата с дата окончание оплату и если срок истёк их красит красным цветом. когда обе даты ровни то их красит жёлтым цветом когда срок оплати ещё не истёк их надо красит зелёным цветом.
0
Yury Komar
Модератор
Эксперт .NET
2364 / 2169 / 346
Регистрация: 27.01.2014
Сообщений: 3,898
Завершенные тесты: 1
10.09.2016, 21:26 #4
Khaker_tt, а срок оплаты истекает через сколько дней?
0
Khaker_tt
30 / 30 / 6
Регистрация: 24.11.2015
Сообщений: 330
Завершенные тесты: 1
10.09.2016, 21:29  [ТС] #5
Yury Komar, после окончание срока столбец (подату). Когда срок по дату заканчивается .
0
Yury Komar
Модератор
Эксперт .NET
2364 / 2169 / 346
Регистрация: 27.01.2014
Сообщений: 3,898
Завершенные тесты: 1
10.09.2016, 21:43 #6
кароче, с таким ТЗ вы далеко не уйдете...
Получение интервала между двумя датами в DGV
Код с коленки, чисто чтоб подать идею
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        For i = 1 To 25
            DataGridView1.Rows.Add(i, "xnj-nj", "jfdahkjahs", Now.ToShortDateString, Now.Date.AddDays(i).ToShortDateString)
            If DateDiff(DateInterval.Day, CDate(DataGridView1.Rows(DataGridView1.Rows.Count - 1).Cells(4).Value), Now.Date) > 30 Then
                DataGridView1.Rows(DataGridView1.Rows.Count - 1).DefaultCellStyle.BackColor = Color.IndianRed
            ElseIf DateDiff(DateInterval.Day, CDate(DataGridView1.Rows(DataGridView1.Rows.Count - 1).Cells(4).Value), Now.Date) < 0 Then
                DataGridView1.Rows(DataGridView1.Rows.Count - 1).DefaultCellStyle.BackColor = Color.LightGreen
            ElseIf DateDiff(DateInterval.Day, CDate(DataGridView1.Rows(DataGridView1.Rows.Count - 1).Cells(4).Value), Now.Date) > 0 And _
    DateDiff(DateInterval.Day, CDate(DataGridView1.Rows(DataGridView1.Rows.Count - 1).Cells(6).Value), Now.Date) < 30 Then
                DataGridView1.Rows(DataGridView1.Rows.Count - 1).DefaultCellStyle.BackColor = Color.GreenYellow
            Else
                DataGridView1.Rows(DataGridView1.Rows.Count - 1).DefaultCellStyle.BackColor = Color.GreenYellow
            End If
        Next
        For i = 1 To 50
            DataGridView1.Rows.Add(i, "xnj-nj", "jfdahkjahs", Now.ToShortDateString, Now.Date.AddDays(5 - i).ToShortDateString)
            If DateDiff(DateInterval.Day, CDate(DataGridView1.Rows(DataGridView1.Rows.Count - 1).Cells(4).Value), Now.Date) > 30 Then
                DataGridView1.Rows(DataGridView1.Rows.Count - 1).DefaultCellStyle.BackColor = Color.IndianRed
            ElseIf DateDiff(DateInterval.Day, CDate(DataGridView1.Rows(DataGridView1.Rows.Count - 1).Cells(4).Value), Now.Date) < 0 Then
                DataGridView1.Rows(DataGridView1.Rows.Count - 1).DefaultCellStyle.BackColor = Color.LightGreen
            ElseIf DateDiff(DateInterval.Day, CDate(DataGridView1.Rows(DataGridView1.Rows.Count - 1).Cells(4).Value), Now.Date) > 0 And _
          DateDiff(DateInterval.Day, CDate(DataGridView1.Rows(DataGridView1.Rows.Count - 1).Cells(4).Value), Now.Date) < 30 Then
                DataGridView1.Rows(DataGridView1.Rows.Count - 1).DefaultCellStyle.BackColor = Color.GreenYellow
            Else
                DataGridView1.Rows(DataGridView1.Rows.Count - 1).DefaultCellStyle.BackColor = Color.GreenYellow
            End If
        Next
    End Sub
2
Khaker_tt
30 / 30 / 6
Регистрация: 24.11.2015
Сообщений: 330
Завершенные тесты: 1
10.09.2016, 21:58  [ТС] #7
Yury Komar, я благодарен но знаете у меня там в проекте такой вариант по моему не получается. Если вы посмотрели пример там трудно применят ваш код. У меня всё там связано с базой данных. мне интересует проседура sub swet.
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    Sub swet()
        'For j = 0 To DataGridView1.Rows.Count - 1
        '    If IsDBNull(DataGridView1.Rows(j).Cells("Подату").Value) Then
        '        Dim chisla As Date
        '        chisla = DataGridView1.Rows(j).Cells("Подату").Value     ошибка вот здесь ......
        '        'DataGridView1.Rows(j).Cells("Подату").Value
        '        Dim N As Date = Now
        '        Dim k = DateDiff(DateInterval.Day, chisla, N)
        '        If k > 0 Then
        '            DataGridView1.Rows(j).DefaultCellStyle.BackColor = Color.Red
        '        ElseIf k = 0 Then
        '            DataGridView1.Rows(j).DefaultCellStyle.BackColor = Color.Yellow
        '        Else
        '            DataGridView1.Rows(j).DefaultCellStyle.BackColor = Color.LawnGreen
        '        End If
        '    End If
        'Next
 
    End Sub
0
Yury Komar
Модератор
Эксперт .NET
2364 / 2169 / 346
Регистрация: 27.01.2014
Сообщений: 3,898
Завершенные тесты: 1
10.09.2016, 22:01 #8
Khaker_tt, я не буду смотреть ваш проект. Во-первых он у меня не не открывается, так как сделан в студии выше 2010, а во-вторых, попробуйте всетаки сами сделать, и уже конкретные вопросы задавайте, а не такого плана: Я НЕ МОГУ, ПОСМОТРИТЕ И СДЕЛАЙТЕ "ЗА МЕНЯ".
1
ovva
2203 / 1907 / 472
Регистрация: 02.02.2013
Сообщений: 1,782
Записей в блоге: 2
10.09.2016, 22:29 #9
Лучший ответ Сообщение было отмечено Khaker_tt как решение

Решение

vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
For j = 0 To DataGridView1.Rows.Count - 1
    If Not IsDBNull(DataGridView1.Rows(j).Cells(0).Value) Then
        Dim chisla As Date
        chisla = DataGridView1.Rows(j).Cells(0).Value
        Dim N As Date = Now
        Dim k = DateDiff(DateInterval.Day, chisla, N)
        If k > 0 Then
            DataGridView1.Rows(j).DefaultCellStyle.BackColor = Color.Red
        ElseIf k = 0 Then
            DataGridView1.Rows(j).DefaultCellStyle.BackColor = Color.Yellow
        Else
            DataGridView1.Rows(j).DefaultCellStyle.BackColor = Color.LawnGreen
        End If
    End If
Next
3
Khaker_tt
30 / 30 / 6
Регистрация: 24.11.2015
Сообщений: 330
Завершенные тесты: 1
10.09.2016, 22:36  [ТС] #10
ovva, спасибо все нормально вот на рисунке:
0
Миниатюры
Получение интервала между двумя датами в DGV  
Khaker_tt
30 / 30 / 6
Регистрация: 24.11.2015
Сообщений: 330
Завершенные тесты: 1
10.09.2016, 22:40  [ТС] #11
ovva, тут снова получается ошибочка когда я уберу оплату из кого не будь там появляется такая ошибка: откуда это ошибка после изменение появляется?
0
Миниатюры
Получение интервала между двумя датами в DGV  
Yury Komar
Модератор
Эксперт .NET
2364 / 2169 / 346
Регистрация: 27.01.2014
Сообщений: 3,898
Завершенные тесты: 1
10.09.2016, 22:45 #12
Khaker_tt, потому что дполнительную проверку на содержание ячейки надо делать... она пустая.
0
Khaker_tt
30 / 30 / 6
Регистрация: 24.11.2015
Сообщений: 330
Завершенные тесты: 1
10.09.2016, 22:48  [ТС] #13
Yury Komar, вот здесь же проверяется по моему:
vb.net
1
If Not IsDBNull(DataGridView1.Rows(j).Cells(0).Value) Then
0
Yury Komar
Модератор
Эксперт .NET
2364 / 2169 / 346
Регистрация: 27.01.2014
Сообщений: 3,898
Завершенные тесты: 1
10.09.2016, 22:56 #14
Khaker_tt, так она и не NULL, она ""
1
Khaker_tt
30 / 30 / 6
Регистрация: 24.11.2015
Сообщений: 330
Завершенные тесты: 1
10.09.2016, 23:03  [ТС] #15
Yury Komar, я очень благодарен ВАМ ВСЕМ после проверке получилась у меня.....
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 For j = 0 To DataGridView1.Rows.Count - 1
            If Not IsDBNull(DataGridView1.Rows(j).Cells(4).Value) Then
                Dim chisla As Date
                If DataGridView1.Rows(j).Cells(4).Value <> "" Then
                    chisla = DataGridView1.Rows(j).Cells(4).Value
                    Dim N As Date = Now
                    Dim k = DateDiff(DateInterval.Day, chisla, N)
                    If k > 0 Then
                        DataGridView1.Rows(j).DefaultCellStyle.BackColor = Color.Red
                    ElseIf k = 0 Then
                        DataGridView1.Rows(j).DefaultCellStyle.BackColor = Color.Yellow
                    Else
                        DataGridView1.Rows(j).DefaultCellStyle.BackColor = Color.LawnGreen
                    End If
                End If
            End If
        Next
0
10.09.2016, 23:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.09.2016, 23:03
Привет! Вот еще темы с решениями:

Разница между датами в формате "год/мес/день"
Простая вроде задачка, но Бейсик я увидел тока сегодня первый день :) потратил...

Обмен данными между двумя программами
Доброго времени суток! Подскажите, есть ли возможность передавать из одной...

Парсинг между двумя тегами Html
Доброго времени суток. Уверен, на форуме было не мало подобных тем, но...

Вычитание разницы между двумя числами
Проблема,есть значение Х = 500(к примеру) котрое прибавляеся к лайблу. У меня...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru