Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 23.05.2018
Сообщений: 23
MS Access

DateTimePicker1 и DateTimePicker2. Найти совпадение дат в таблице

26.05.2019, 18:55. Показов 1646. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Идея следующая. Запрет на заселение в один номер при условии, что есть совпадение DateTimePicker3 (дата заезда), или DateTimePicker2 (дата отъезда) с датой заезда - дату отъезда из таблицы "Бронь".


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
   private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                myConnection = new OleDbConnection(connectString);
                myConnection.Open();
                string sqll = "SELECT Номер FROM Бронь where not ('" + dateTimePicker3.Value + "' < Дата заезда and '" + dateTimePicker2.Value + "' < Дата заезда or '" + dateTimePicker3.Value + "' > Дата отъезда and '" + dateTimePicker2.Value + "' > Дата отъезда)";     // Нашёл подобный запрос в интернете
                OleDbCommand command = new OleDbCommand(sqll, myConnection);
                command.ExecuteScalar();
                myConnection.Close();
            }
            
            catch
            {
                гостиTableAdapter.Insert(textBox1.Text, textBox2.Text, textBox3.Text, textBox4.Text, textBox5.Text, comboBox2.Text, 
        dateTimePicker3.Value, dateTimePicker2.Value);
                свободныеTableAdapter1.Update(hotelDataSet.Свободные); //Обновить таблицу "Свободные" 
                броньTableAdapter.Insert(textBox5.Text, dateTimePicker3.Value, dateTimePicker2.Value);  //Бронирование номера
                MessageBox.Show("Гость заселён.", "Сообщение");
            }
 
        }
1. При нажатии на кнопку "заселить" в таблице "Бронь" находятся все записи с номером комнаты, которую я выбрал для заселения.
2. Если есть совпадение в датах этих записей, то вывод сообщения что-то типа: "В эти даты номер занят"
Если совпадений дат не нашлось, то гость (со всей информацией о нём) заносится в отдельную таблицу и сведения о брони номера так же попадают в таблицу "Бронь", для проверки в будущем.

Я не знаю как написать запрос SQL для осуществления этой идеи. Я был бы рад любым вашим идеям, спасибо
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.05.2019, 18:55
Ответы с готовыми решениями:

Фильтр дат в таблице между DateTimePicker1.DateTime и DateTimePicker2.DateTime
Не пинайте сильно. Начинающий. Не срабатывает выбор дат из таблицы. База GDB Firebird. Поле таблицы DATAV в базе тип поля Date. ...

Фильтрация с DateTimePicker1 по DateTimePicker2.
Здравствуйте, как реализовать фильтрацию с с DateTimePicker1 по DateTimePicker2? Используется DBGrid,Table. ...

Фильтрация DateTimePicker1 и DateTimePicker2
Привет всем, знаю тема баян, но может поможете справится как сделать фильтрацию по дате используя 2 компонента DateTimePicker и вывести...

10
0 / 0 / 0
Регистрация: 23.05.2018
Сообщений: 23
26.05.2019, 19:02  [ТС]
Для наглядности
Миниатюры
DateTimePicker1 и DateTimePicker2. Найти совпадение дат в таблице  
0
78 / 67 / 13
Регистрация: 04.10.2018
Сообщений: 330
26.05.2019, 19:25
Если я правильно понимаю, пользователь вводит, номер комнаты? Вам нужно узнать свободна, ли эта комната на данную дату? Если свободная то данные заносятся в бд, если нет выводить сообщения? Так?
0
0 / 0 / 0
Регистрация: 23.05.2018
Сообщений: 23
26.05.2019, 19:29  [ТС]
Varyna, да, номер комнаты берётся из datagridview. Вы всё правильно поняли
0
78 / 67 / 13
Регистрация: 04.10.2018
Сообщений: 330
26.05.2019, 19:44
Можно проверять перед добавлением.

Тут узнаем сколько запрос выводит значений, если >0 то добавляем если 0 то выводите сообщение.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
List<String> Proverka = new List<String>();
 CMD = new SqlCommand("select  count (*) as Proverka  from Table where secondDate = @secondDate  and festDate = @festDate  and Comnata= @Comnata order by DateZamera ", Con);
            CMD.Parameters.AddWithValue("@secondDate", dateTimePicker1.Value);
            CMD.Parameters.AddWithValue("@festDate", dateTimePicker2.Value);
         CMD.Parameters.AddWithValue("@Comnata", Переменная комнаты);
            RDR = CMD.ExecuteReader();
            while (RDR.Read())
            {
                Proverka .Add(Convert.ToString(RDR["Komnata"]));
                
            }
            RDR.Close();
            Con.Close();
if (Proverka.count > 0)
{
   .....
}
Я не уверен что это правильно. Но я думаю дальше вы сами справитесь.
Печатал в блокноте могут быть ошибки.
Может все же проверять, номер комнаты и номер отъезда?
1
0 / 0 / 0
Регистрация: 23.05.2018
Сообщений: 23
27.05.2019, 01:30  [ТС]
Varyna, Спасибо большое! Но что если будет выбрана дата "внутри" даты из БД.
Например, номер 100 забронирован с 20.05 - 30.05 и я захочу поселить в этот номер на 24.05 - 28.05.

Если я не ошибаюсь, то предложенный Вами код такое не обработает.
Очень сложно

Добавлено через 5 часов 13 минут
Решил эту задачу при помощи своих друзей. Один дал мне идею перевести значения из Date в Int и сравнить их для проверки доступности номера. Другой помог эту идею реализовать
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
27.05.2019, 08:52
Лучший ответ Сообщение было отмечено Raushan919 как решение

Решение

Raushan919, только вот такая реализация - это говнокодинг. и работа программы обязательно будет неверной.
C#
1
Один дал мне идею перевести значения из Date в Int
например, что будет, если даты попадут на пересечение месяцев?
к тому же, зачем лишняя операция конверта, если даты прекрасно отнимаются друг от друга?
1
0 / 0 / 0
Регистрация: 23.05.2018
Сообщений: 23
27.05.2019, 13:08  [ТС]
AndreyVorobey, Да, "говнокодинг". Но иначе реализовать у меня не получилось, а сроки поджимают. Работаю с тем, что есть
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
27.05.2019, 13:34
Raushan919, тем не менее мой вопрос остался незамеченным.
0
0 / 0 / 0
Регистрация: 23.05.2018
Сообщений: 23
27.05.2019, 13:38  [ТС]
AndreyVorobey,
Цитата Сообщение от AndreyVorobey Посмотреть сообщение
к тому же, зачем лишняя операция конверта, если даты прекрасно отнимаются друг от друга?
Я не знаю зачем сделал через конвертирование. Попробую сделать без этого
Отсутствие опыта работы с датами (да и вообще c С#), даёт о себе знать.
0
0 / 0 / 0
Регистрация: 23.05.2018
Сообщений: 23
27.05.2019, 21:58  [ТС]
AndreyVorobey, Спасибо, отменил конвертирование. Всё работает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.05.2019, 21:58
Помогаю со студенческими работами здесь

Возможно ли объединить DateTimePicker1 и DateTimePicker2?
Здравствуйте. Возможно ли объединить, чтобы конец текущего числа был 29.03.2016. А не 19.03.2016. Фото прикрепил. begin ...

Как из DateTimePicker2 вычесть DateTimePicker1?
Как из DateTimePicker2 вычесть DateTimePicker1 a.datevil2 = DateTime.Parse(dateTimePicker1.Text); a.datepril2 =...

Как сделать чтобы DateTimePicker2 не могла быть раньше DateTimePicker1?
Как сделать чтобы DateTimePicker2(дата возврата) не могла быть раньше DateTimePicker1(даты выдачи), иначе вывести...

Сделать, чтобы дата в DateTimePicker1 не могла быть больше, чем в DateTimePicker2
Как сделать так что бы: DateTimePicker1 не мог быть больше чем DateTimePicker2 И еще что бы выводил ошибку

Поиск по интервалу дат DateTimePicker1
Добрый день. Помогите пожалуйста прописать код для выборки дат. Мне нужно при вводе интервала дат в DateTimePicker1 и DateTimePicker2...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru