Мне нужно написать несколько условий для добавления записи в БД! C#
форумчане, решил сделать обработку условий при нажатии кнопки, а именно проверки условий в трёх колонках, а именно room_number, arrival_time и departure_time. Нужно чтобы при при нажатии на кнопку "забронировать", программа смотрела если на этот номер комнаты в диапазоне этой даты, езё запись если нет, тогда происходит занесение в таблицу, а если есть тогда, предупреждение, что бронь этого номера на это число уже есть. Я пытался сделать это циклом с проверкой условий, но у меня увы не получилось. Надеюсь на вашу помощь. Подключение к БД(MS SQL Server) ADO.NET. Код формы ниже:
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace Гостиница
{
public partial class Form4 : Form
{
my_main_base1Entities1 objet = new my_main_base1Entities1();
Point oldPos;
bool isDragging = false;
Point oldMouse;
public Form4()
{
InitializeComponent();
}
private const int WM_NCHITTEST = 0x84;
private const int HTCLIENT = 0x1;
private const int HTCAPTION = 0x2;
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case WM_NCHITTEST:
base.WndProc(ref m);
if ((int)m.Result == HTCLIENT)
m.Result = (IntPtr)HTCAPTION;
return;
}
base.WndProc(ref m);
}
private void Form4_Load(object sender, EventArgs e)
{
dataGridView1.DataSource = objet.booking.ToList();
dataGridView1.Columns["id"].Visible = false;
dataGridView1.Columns["client"].Visible = false;
dataGridView1.Columns["room"].Visible = false;
}
private void button4_Click(object sender, EventArgs e)
{
textBox1.Visible = true;
textBox2.Visible = true;
textBox3.Visible = true;
textBox4.Visible = true;
label2.Visible = true;
label3.Visible = true;
label4.Visible = true;
label5.Visible = true;
}
private void button6_MouseMove(object sender, MouseEventArgs e)
{
panel4.Visible = true;
panel5.Visible = true;
}
private void button6_MouseLeave(object sender, EventArgs e)
{
panel4.Visible = false;
panel5.Visible = false;
}
private void button4_MouseMove(object sender, MouseEventArgs e)
{
panel2.Visible = true;
panel3.Visible = true;
}
private void button4_MouseLeave(object sender, EventArgs e)
{
panel2.Visible = false;
panel3.Visible = false;
}
private void button5_MouseMove(object sender, MouseEventArgs e)
{
panel6.Visible = true;
panel7.Visible = true;
}
private void button5_MouseLeave(object sender, EventArgs e)
{
panel6.Visible = false;
panel7.Visible = false;
}
private void Form4_MouseDown(object sender, MouseEventArgs e)
{
this.isDragging = true;
this.oldPos = this.Location;
this.oldMouse = e.Location;
}
private void Form4_MouseMove(object sender, MouseEventArgs e)
{
if (this.isDragging)
{
this.Location = new Point(oldPos.X + (e.X - oldMouse.X), oldPos.Y + (e.Y - oldMouse.Y));
}
}
private void Form4_MouseUp(object sender, MouseEventArgs e)
{
this.isDragging = false;
}
private void label1_MouseMove(object sender, MouseEventArgs e)
{
label1.Capture = false;
Message m = Message.Create(Handle, 0xa1, new IntPtr(2), IntPtr.Zero);
WndProc(ref m);
}
private void button1_MouseMove(object sender, MouseEventArgs e)
{
button1.Capture = false;
Message m = Message.Create(Handle, 0xa1, new IntPtr(2), IntPtr.Zero);
WndProc(ref m);
}
private void button2_Click(object sender, EventArgs e)
{
}
private void button2_MouseMove(object sender, MouseEventArgs e)
{
button2.Capture = false;
Message m = Message.Create(Handle, 0xa1, new IntPtr(2), IntPtr.Zero);
WndProc(ref m);
}
private void button3_Click(object sender, EventArgs e)
{
this.Close();
}
private void button6_Click(object sender, EventArgs e)
{
booking booking = new booking
{
client_number = Convert.ToInt32(textBox1.Text),
room_number = Convert.ToInt32(textBox2.Text),
arrival_time = Convert.ToDateTime(textBox3.Text),
departure_time = Convert.ToDateTime(textBox4.Text),
};
objet.booking.Add(booking);
objet.SaveChanges();
textBox1.Text = "";
textBox2.Text = "";
textBox3.Text = "";
textBox4.Text = "";
textBox1.Visible = false;
textBox2.Visible = false;
textBox3.Visible = false;
textBox4.Visible = false;
label2.Visible = false;
label3.Visible = false;
label4.Visible = false;
label5.Visible = false;
}
private void button5_Click(object sender, EventArgs e)
{
objet.SaveChanges();
}
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
}
}
}
Ответы (1 шт):
Вот простой запрос только для arrival_time:
SELCET room FROM имя_таблицы WHERE room_number = 101 AND arrival_time not BETWEEN '2018/05/05' AND '2018/05/06'
Его можно скомбинировать/изменить исходя из вашего решения, ну например сделать апдейт с этими условиями, ну или сделать проверку занят ли такой номер на эти даты или нет, все зависит от вашего решения.
