Как обновить столбец данных, когда значение даты превышает заданную дату - PullRequest
0 голосов
/ 28 марта 2020

У меня есть два типа данных date (dateBorrowed и dueDate) и столбец состояния в моей таблице BorrowedBook. Теперь я хочу обновить статус с «Не возвращено» до статуса «Просрочено» автоматически, когда книга не возвращается после истечения срока.

Я пытался

public void DueDate()
    {
        if (frmissue.dtIssueDate.Value > frmissue.dtDueDate.Value)
        {
            cn.Open();
            cm = new SqlCommand("UPDATE tblBorrowedBook SET status = 'Overdue' WHERE borrowID = @borrowID", cn);
            cm.Parameters.AddWithValue("@borrowID", lblID.Text);
            cm.ExecuteNonQuery();
            cn.Close();
        }
    }

Но это ничего не обновляет. Я хочу попробовать сделать это с помощью SQL запросов, но я не знаю, с чего начать.

Я также пробовал что-то вроде:

frmBooksOnHand frm = new frmBooksOnHand(this);
        cn.Open();
        cm = new SqlCommand("SELECT dueDate FROM tblBorrowedBook AS dueDate", cn);
        dr = cm.ExecuteReader();
        while (dr.Read())
        {
            dtDueDateTime.Value = Convert.ToDateTime(dr["dueDate"]);
        }
        dr.Close();
        cn.Close();

        if (dtDueDateTime.Value > DateTime.Now)
        {
            cn.Open();
            cm = new SqlCommand("UPDATE tblBorrowedBook SET status = 'Overdue'", cn);
            cm.ExecuteNonQuery();
            cn.Close();
        }

Что мне нужно:

dateBorrowed> dueDate (из значения базы данных)

Состояние обновления = 'просрочено'

1 Ответ

0 голосов
/ 28 марта 2020

Сначала создайте хранимую процедуру на вашем SQL сервере

Create Procedure sp_UpdateStatus @borrowID int

as

Begin

declare @dutedate as datetime
select @dutedate = dueDate from tblBorrowedBook where borrowID = @borrowID

IF @duedate < GETDATE()
UPDATE tblBorrowedBook SET status = 'Overdue' WHERE borrowID = @borrowID

End

Теперь в коде вместо вашего запроса вызовите хранимую процедуру.

using (SqlConnection con = new SqlConnection(dc.Con)) {
using (SqlCommand cmd = new SqlCommand("sp_UpdateStatus", con)) {
  cmd.CommandType = CommandType.StoredProcedure;

  cmd.Parameters.AddWithValue("@borrowID", int.Parse(lblID.Text));

  con.Open();
  cmd.ExecuteNonQuery();
}}

Надеюсь, это поможет.

Примечание. Непроверенный код и запрос. Но надеюсь, вы сможете исправить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...