Member 13685867 Ответов: 1

Как написать дресс-код бронирования и предотвратить бронирование в registeresed date


я хочу написать код для магазина аренды одежды и предотвратить бронирование в эту забронированную дату и на следующий день

Что я уже пробовал:

try
           {

               OleDbConnection con = new OleDbConnection();
               con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=marriage_dresses.accdb;";
               con.Open();
               OleDbCommand cmd = new OleDbCommand();
               string selectdata = "select dress_name from booking where take_date between @date1 AND @date2 AND dress_name=@name";
               cmd = new OleDbCommand(selectdata,con);
               cmd.Parameters.AddWithValue("@date1",dateTimePicker1.Value.Date);
               cmd.Parameters.AddWithValue("@date2",dateTimePicker2.Value.Date);
               cmd.Parameters.AddWithValue("@name",comboBox1.Text);
               OleDbDataAdapter da = new OleDbDataAdapter(cmd);
               DataTable dt = new DataTable();
               da.Fill(dt);
               con.Close();
               if (dt.Rows.Count != 0)
               {
                   MessageBox.Show("cannot book at this date");

               }
               else
               {
                   try
                   {

                       OleDbConnection con2 = new OleDbConnection();
                       con2.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=marriage_dresses.accdb;";
                       con2.Open();
                       OleDbCommand cmd2 = new OleDbCommand();
                       string insertdata = "insert into booking(dress_name,person_name,take_date,return_date,total_price,payed,rest,entry_name) values (@val1,@val2,@val3,@val4,@val5,@val6,@val7,@val8)";
                       cmd2 = new OleDbCommand(insertdata, con2);
                       cmd2.Parameters.AddWithValue("@val1", comboBox1.Text);
                       cmd2.Parameters.AddWithValue("@val2", textEdit1.Text);
                       cmd2.Parameters.AddWithValue("@val3", dateTimePicker1.Value);
                       cmd2.Parameters.AddWithValue("@val4", dateTimePicker2.Value);
                       cmd2.Parameters.AddWithValue("@val5", textEdit2.Text);
                       cmd2.Parameters.AddWithValue("@val6", textEdit3.Text);
                       double c = Convert.ToDouble(textEdit2.Text) - Convert.ToDouble(textEdit3.Text);
                       cmd2.Parameters.AddWithValue("@val7", c);
                       cmd2.Parameters.AddWithValue("@val8", "");
                       cmd2.ExecuteNonQuery();
                       MessageBox.Show("booking succesful");
                       string query = "select * from booking";
                       OleDbCommand cmd3 = new OleDbCommand(query, con2);
                       OleDbDataAdapter da2 = new OleDbDataAdapter(cmd3);
                       DataTable dt2 = new DataTable();
                       da2.Fill(dt2);
                       gridControl1.DataSource = dt2;
                       textEdit1.Text = "";
                       textEdit2.Text = "";
                       textEdit3.Text = "";


                       con.Close();

                   }
                   catch (Exception)
                   {
                       MessageBox.Show("error");
                   }

1 Ответов

Рейтинг:
0

OriginalGriff

Это требует небольшой работы: вам не нужно использовать DataAdapter, и вам не нужно возвращать имя платья - вы уже знаете это!
Вместо этого рассмотрите возможность возврата счетчика и используйте метод ExecuteScalar в команде для прямого возврата числа.

Но... вам также нужно более тщательно обдумать свои условия: просто проверка и существующая "дата взятия" не находятся между началом или концом требуемого периода аренды, и это не сработает:

Existing hire: 1st to 10th March.
Required hire: 5th to 15th March.
Сразу же вернутся никакие строки, и вы скажете, что все в порядке, несмотря на то, что платье должно быть в двух местах одновременно...

Я бы посоветовал вам сесть с ручкой и бумагой и проработать все возможные перестановки и посмотреть, сможете ли вы придумать условия, которые соответствуют всем из них, прежде чем вы броситесь в код.