Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 02.11.2017
Сообщений: 7
1

Как сравнить время в запланированных делах?

24.06.2018, 12:27. Показов 2964. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Обращаюсь за помощью, т.к. не могу понять что неверно в коде что я написал.
Суть задания. Написать программу которая позволяет пользователю вводить запланированные дела и время на которое оно назначено. Необходимо создать процедуру-функцию возвращающую булевое значение. Когда пользователь вводит новое задание с запланированным временем, процедура-функция должна определять не назначено ли другое задание на это время. Если она возвращает TRUE . приложение должно уведомлять пользователя через диалоговое окно списка. (Установить опцию Option Strict в значение ON и при необходимости вызывать метод класса CONVERT.
Интерфейс имеет один TEXT BOX и DATE TIME PICKER, а также два LIST BOX.
Вот что написал:

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
29
30
Public Class shelduleForm
 
    Private Sub appButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles appButton.Click
 
        ' объявляем переменные
        Dim sheldule As String ' задание в стринг формате
        Dim time As Date ' время в поле
        Dim collection As Date ' время в поле
 
        sheldule = shelduleTextBox.Text
        time = Convert.ToDateTime(DateTimePicker.Value)
 
        'вводим задане и время в поля
        sheldulsListBox.Items.Add(sheldule) ' получаем значения в листбоксы
        collection = CDate(sheldulsListBox.Items.Item(CInt(sheldule)))
        If timeTaken(time, collection) = True Then
            MessageBox.Show("Ваше задание на это время уже назначено", "Добавление задания невозможно", MessageBoxButtons.OK, MessageBoxIcon.Error)
        Else
            timesListBox.Items.Add(time.ToShortTimeString)
        End If
    End Sub
    Function timeTaken(ByVal toTime As Date, ByVal coll As Date) As Boolean
 
        If toTime = coll Then
            Return True
        Else
            Return False
        End If
    End Function
End Class
Не понимаю, где ошибся.
Прошу сильно не пинать, я только учусь ((
Миниатюры
Как сравнить время в запланированных делах?  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.06.2018, 12:27
Ответы с готовыми решениями:

Программа должна выводить на экран информацию о делах, запланированных на заданный день
Составить программу, которая создаёт файл данных с такими записями на каждый день недели: что...

Как можно сравнить тип время
Подскажите как можно травнить тип времени, у меня есть datagridview в нем столбец содержит datatime...

Как сравнить введенное время с текущим
Ребят помогите. Есть поле с временем , как можно сравнить это поле с текущей датой . Заранее...

Как сравнить время, введенное в MaskEdit, с текущим
В MaskEdit я поставила Short Time. Как мне сравнить время введенное в MaskEdit и myDate:=now; //...

10
Модератор
Эксперт .NET
4203 / 3287 / 497
Регистрация: 27.01.2014
Сообщений: 6,033
24.06.2018, 18:14 2
Цитата Сообщение от alexandrs011 Посмотреть сообщение
Не понимаю, где ошибся.
честно говоря я тоже не пойму что у вас за ошибка, что именно у в ас работает не так?

Добавлено через 2 минуты
ну беглым глазом непонятно почему вы вводите время в переменную с типом DATE?

Добавлено через 14 минут
Цитата Сообщение от alexandrs011 Посмотреть сообщение
а также два LIST BOX.
это обязательное условие? почему не ListView? ведь время и задание должны быть связаны, в данном случае два листбокса - плохое решение.
0
Модератор
Эксперт .NET
4203 / 3287 / 497
Регистрация: 27.01.2014
Сообщений: 6,033
24.06.2018, 18:27 3
Лучший ответ Сообщение было отмечено Yury Komar как решение

Решение

alexandrs011, если использование двух ListBox не критично, то предлагаю вариант с одним ListView(в виде таблицы).... Так будет рациональнее.
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
Public Class ScheduleForm
    Private Sub appButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles appButton.Click
        ' объявляем переменные
        Dim sheldule As String = shelduleTextBox.Text  ' задание в стринг формате
        Dim time As DateTime = DateTimePicker.Value    ' время в поле
 
        'проверка занятости времени
        If Not timeTaken(time) Then
            'если время не занято (вернуто FALSE) добавляем новое задание в таблицу
            Dim newTask As New ListViewItem(sheldule) 'создаем новый экземпляр строки ListView с названием задания (колонка 1)
            newTask.SubItems.Add(Format(time, "HH:mm")) 'присваимваем время заданию в тяблицу (колонка 2)
            ScheduleListView.Items.Add(newTask) 'добавляем строку в таблицу
        End If
    End Sub
 
    Function timeTaken(tTime As DateTime) As Boolean
        For Each lvItem As ListViewItem In ScheduleListView.Items
            If lvItem.SubItems(1).Text = Format(tTime, "HH:mm") Then
                MessageBox.Show("Ваше задание на это время уже назначено", "Добавление задания невозможно", MessageBoxButtons.OK, MessageBoxIcon.Error)
                Return True
            End If
        Next
        Return False
    End Function
End Class
PS: писал на скорую руку, так что, если есть желание - переделайте под себя.
Вообще конечно правильнее будет использовать коллекцию типа Dictionary(DateTime, String), заполнять ее и проверять ее а не напрямую обращаться к таблице. Но это уже сами... Почву для размышлений я вам подкинул.
Как сравнить время в запланированных делах?
Вложения
Тип файла: zip ScheduleBook.zip (76.6 Кб, 4 просмотров)
0
0 / 0 / 0
Регистрация: 02.11.2017
Сообщений: 7
25.06.2018, 12:53  [ТС] 4
Спасибо за отклик! Обязательно попробую!

А про лист боксы, там был выбор либо лист бокс или текстбокс в режиме простого отображения информации. Про LIST VIEW выбора не давали ((

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

Заранее благодарю!
0
Модератор
Эксперт .NET
4203 / 3287 / 497
Регистрация: 27.01.2014
Сообщений: 6,033
25.06.2018, 13:27 5
alexandrs011, ну если вы посмотрите внимательно на мой код - то в строке 18 именно текст сравнивается.
0
0 / 0 / 0
Регистрация: 02.11.2017
Сообщений: 7
25.06.2018, 14:10  [ТС] 6
Кажется я понял о чем вы, в "списках" list box и list view внесенные переменные сравниваются не по типу DATE, а как текстовые (STRING) переменные?? правильно?))
0
Модератор
Эксперт .NET
4203 / 3287 / 497
Регистрация: 27.01.2014
Сообщений: 6,033
25.06.2018, 20:24 7
alexandrs011, да все верно

Добавлено через 3 часа 37 минут
alexandrs011, еще вопрос - выбор был ЛистБокс или ТекстБокс? Но не 2 ЛистБококса? один?
0
0 / 0 / 0
Регистрация: 02.11.2017
Сообщений: 7
27.06.2018, 22:54  [ТС] 8
Не было условия, просто textbox и listbox были уже пройдены, до работы с listbox еще уроки не дошли.
Еще не зная данного элемента я не мог знать что так можно, что вы мне предложили как решение. Спасибо!

Добавлено через 9 минут
Цитата Сообщение от alexandrs011 Посмотреть сообщение
Не было условия, просто textbox и listbox были уже пройдены, до работы с listbox еще уроки не дошли.
Еще не зная данного элемента я не мог знать что так можно, что вы мне предложили как решение. Спасибо!
Поправлюсь до listview еще не до дошли
0
Модератор
Эксперт .NET
4203 / 3287 / 497
Регистрация: 27.01.2014
Сообщений: 6,033
28.06.2018, 03:57 9
alexandrs011, ну так поменяйте на ListBox, или уже ненадо?
0
0 / 0 / 0
Регистрация: 02.11.2017
Сообщений: 7
28.06.2018, 14:34  [ТС] 10
Попробую обязательно, спасибо! Результат тут размещу для примера )) Если что станет непонятно отпишусь.
0
Модератор
Эксперт .NET
4203 / 3287 / 497
Регистрация: 27.01.2014
Сообщений: 6,033
28.06.2018, 15:13 11
Лучший ответ Сообщение было отмечено Yury Komar как решение

Решение

Цитата Сообщение от alexandrs011 Посмотреть сообщение
Результат тут размещу
ну вот как вариант с одним ListBox:
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
Public Class ScheduleForm
    Private Sub appButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles appButton.Click
        ' объявляем переменные
        Dim sheldule As String = shelduleTextBox.Text  ' задание в стринг формате
        Dim time As DateTime = DateTimePicker.Value    ' время в поле
 
        'проверка занятости времени
        If Not timeTaken(time) Then
            'если время не занято (вернуто FALSE) добавляем новое задание 
            ScheduleListBox.Items.Add(sheldule & vbTab & Format(time, "HH:mm")) 'добавляем новое задание в список
        End If
    End Sub
 
    Function timeTaken(tTime As DateTime) As Boolean
        For Each lvItem As String In ScheduleListBox.Items
            If lvItem.Split(CChar(vbTab))(1) = Format(tTime, "HH:mm") Then
                MessageBox.Show("На это время уже назначено следующее задание:" & vbCrLf & lvItem, "Добавление задания невозможно", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                Return True
            End If
        Next
        Return False
    End Function
End Class
Как сравнить время в запланированных делах?
Вложения
Тип файла: zip ScheduleBook ListBox Used.zip (75.4 Кб, 2 просмотров)
0
28.06.2018, 15:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.06.2018, 15:13
Помогаю со студенческими работами здесь

Сравнить время подъема тела, и время его падения
Тело, брошенное вертикально вверх, возвращается в исходную точку. Сравните время t1 подъема тела и...

Как в js/jquery сравнить строки «дата время» на больше — меньше?
Есть строка вида : var str = '30.10.2015 19:53'; На php я сравниваю такие вещи переводом в...

Как сравнить время: выбрать все в интервале с 8 утра до 8 вечера
нужно выбрать все данные за интервал с 8 утра до 8 ми вечера

Удаление запланированных заданий в планировщике
Как можно удать задания Microsoft? А точнее эти: Microsoft\Windows\Customer Experience...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru