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

Получение интервала между двумя датами в DGV

10.09.2016, 17:12. Просмотров 888. Ответов 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
Ответы с готовыми решениями:

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

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

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

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

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

14
Yury Komar
Модератор
Эксперт .NET
2371 / 2177 / 348
Регистрация: 27.01.2014
Сообщений: 3,913
Завершенные тесты: 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
2371 / 2177 / 348
Регистрация: 27.01.2014
Сообщений: 3,913
Завершенные тесты: 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
2371 / 2177 / 348
Регистрация: 27.01.2014
Сообщений: 3,913
Завершенные тесты: 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
2371 / 2177 / 348
Регистрация: 27.01.2014
Сообщений: 3,913
Завершенные тесты: 1
10.09.2016, 22:01 #8
Khaker_tt, я не буду смотреть ваш проект. Во-первых он у меня не не открывается, так как сделан в студии выше 2010, а во-вторых, попробуйте всетаки сами сделать, и уже конкретные вопросы задавайте, а не такого плана: Я НЕ МОГУ, ПОСМОТРИТЕ И СДЕЛАЙТЕ "ЗА МЕНЯ".
1
ovva
2351 / 1992 / 487
Регистрация: 02.02.2013
Сообщений: 1,850
Записей в блоге: 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
2371 / 2177 / 348
Регистрация: 27.01.2014
Сообщений: 3,913
Завершенные тесты: 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
2371 / 2177 / 348
Регистрация: 27.01.2014
Сообщений: 3,913
Завершенные тесты: 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

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

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

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


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

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

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