ADI@345 Ответов: 1

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


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


Пожалуйста, ответьте мне поскорее.. Это срочно

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

частный недействительными btnSave_Click(объект отправителя, EventArgs в электронной)
{

textBox1. Text = getuniqueID();
SqlConnection con = new SqlConnection(Main. connectionname());

Команда sqlcommand команду cmd = новый sqlcommand, который();




строки quiry1 = "выбрать NoOfBook от BookEntry где AccessionNo='" + comboBox2.Текст + " и NoOfBook &ЛТ;=0";


Ящик для сообщений.Show ("книга недоступна для выпуска"," ошибка ввода", MessageBoxButtons.Хорошо, MessageBoxIcon.Ошибка);



string quiry = "BEGIN TRY" +
"НАЧАТЬ СДЕЛКУ" +
"Вставить в [BookIssue]([T_Id],[issue_date],[due_date],[S_Id],[S_Name],[course],[department],[Accession_no],[book_title],[author],[ISBN],[edition])" +
"VALUES(@T_Id,@issue_date,@due_date,@S_Id,@S_Name,@course,@department,@Accession_no,@book_title,@author,@ISBN,@edition)";




строка update = " UPDATE [BookEntry] SET [NoOfBook] = [NoOfBook] - 1, где AccessionNo = '" + comboBox2. Text + "' и NoOfBook > 0";

УМК.Параметры.AddWithValue("@T_Id", textBox1. Text. Trim());
УМК.Параметры.AddWithValue ("@issue_date", dateTimePicker1. Text. Trim());
УМК.Параметры.AddWithValue ("@due_date", dateTimePicker1. Text. Trim());
УМК.Параметры.AddWithValue("@S_Id", comboBox1. Text. Trim());
УМК.Параметры.AddWithValue ("@S_Name", textBox3. Text. Trim());
УМК.Параметры.AddWithValue ("@course", textBox4. Text. Trim());
УМК.Параметры.AddWithValue ("@department", textBox5. Text. Trim());
УМК.Параметры.AddWithValue ("@Accession_no", comboBox2. Text. Trim());
УМК.Параметры.AddWithValue ("@book_title", textBox7. Text. Trim());
УМК.Параметры.AddWithValue ("@author", textBox8. Text. Trim());
УМК.Параметры.AddWithValue ("@ISBN", textBox9. Text. Trim());
УМК.Параметры.AddWithValue("@edition", textBox10. Text. Trim());


quiry += обновление;

quiry + = "совершить транзакцию" +
"ПОСТАРАЮСЬ" +
"НАЧИНАЙ ЛОВИТЬ" +
"ОТКАТ ТРАНЗАКЦИИ" +
"КОНЕЦ УЛОВА";

УМК.Подключение = кон;
УМК.CommandType = CommandType. Text;
УМК.CommandText = quiry;

пробовать
{
против.Open (); / / устанавливает phy-связь между приложением и БД
УМК.Метод executenonquery();
Ящик для сообщений.Show ("Информация Сохранена.", "Библиотечное Приложение", MessageBoxButtons.Хорошо, MessageBoxIcon.Информация);

}

catch (SqlException ex)
{

Ящик для сообщений.Показать (например, сообщение);
}

наконец
{
if (con. State == ConnectionState.Открыть)
{
против.Закрывать();
}
}
}

nilesh sawardekar

Поле данных NoOfBook?

ADI@345

NoOfBook сохраняется в базе данных, которая является Int .
Я использую этот код
строки quiry1 = "выбрать NoOfBook от BookEntry где AccessionNo='" + comboBox2.Текст + " и NoOfBook &ЛТ;=0";

Этот код дает запись 0 .

и

строка update = " UPDATE [BookEntry] SET [NoOfBook] = [NoOfBook] - 1, где AccessionNo = '" + comboBox2. Text + "' и NoOfBook > 0";
этот код декремента NoOfbook больше 0


но я не могу объединить эти запросы

1 Ответов

Рейтинг:
8

nilesh sawardekar

Согласно вашему коду, который вы предоставили, у вас есть только define и declare query1, но вы никогда не использовали его в sqlcommand для выполнения. Если вы не выполняете какой-либо запрос, то как вы можете получить результат для сравнения?
Кроме того, если вы написали query1 для messagebox, то этот запрос также не является правильным. Ваш запрос должен быть таким, как показано ниже,

string quiry1 = "select COUNT(*) from BookEntry where AccessionNo='" + comboBox2.Text + "' and NoOfBook <=0";


SqlCommand cmd=new SqlCommand(query1, con);
SqlDataReader dr1 ;
dr1=cmd.ExecuteReader();
if (cmd.ExecuteReader().RecordsAffected > 0)
{
    if ((int)cmd.ExecuteScalar()<=0)
    {
        MessageBox.Show("Book is not available for issue", "Input Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}
cmd.ExecuteReader().Close();
cmd.Dispose();


ADI@345

как я мог бы объединить оба запроса ...

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

ADI@345

Я использую приведенный выше код, предоставленный вами, но это дает ошибку,

ExecuteReader требует открытого и доступного соединения. Текущее состояние соединения закрыто.

как решить эту проблему..

nilesh sawardekar

сначала откройте соединение, как вы это сделали в своем коде,
SqlConnection con = new SqlConnection(Main. connectionname());
до этого кода.