2013-12-22 40 views
0

我想通過使用選擇命令選擇電影,在標籤中打印標題一旦選擇..這效果很好。減少股票的選擇

接下來的部分是選定的電影,然後從數據庫股票減少1按鈕點擊。這是我認爲我感到困惑的地方,在點擊按鈕發生之前它不會顯示任何錯誤。

爲更新查詢C#代碼

protected void Button2_Click(object sender, EventArgs e) 
{ 

    var myquery = string.Format("UPDATE DVD SET Stock = Stock - 1"); 
    da.InsertCommand = new OleDbCommand("INSERT INTO DVD (Stock) VALUES (@MessageLabel)", conn); 
    { 
     da.InsertCommand.Parameters.AddWithValue("@Stock", MessageLabel.Text); 

     conn.Open(); 
      da.InsertCommand.ExecuteNonQuery(); 
      using (OleDbCommand cmd = new OleDbCommand(myquery, conn)) 
      cmd.ExecuteNonQuery(); 
     conn.Close(); 
     conn.Dispose(); 
    } 
} 

爲select事件之前的代碼

public void Latest_DVD() 
{ 
    { 
     using (OleDbDataAdapter dataquer = new OleDbDataAdapter("SELECT Title,Category,Director,Stock,Year FROM DVD ", conn)) 
     { 
      dataquer.Fill(dt); 
     } 
    } 
    DG_Latest.ShowHeader = true; 
    DG_Latest.DataSource = dt; 
    DG_Latest.DataBind(); 
    conn.Close(); 
    conn.Dispose(); 
} 

protected void Latest_DVD_SelectedIndexChanged(Object sender, EventArgs e) 
{ 
    GridViewRow row = DG_Latest.SelectedRow; 
    MessageLabel.Text = "You selected to rent " + row.Cells[1].Text + "."; 
} 

所以我想我有查詢錯誤,可能也沒有從標籤檢索更新但也許選擇自己...我不知道通過。

它顯示的錯誤是

Data type mismatch in criteria expression. 

剛過連接打開

+1

你不覺得告訴我們錯誤是什麼會有幫助嗎? – OldProgrammer

+0

您的權利,當然,它顯示標準表達式中的數據類型不匹配。 on da.InsertCommand.ExecuteNonQuery();我整理了我的問題 – Beep

+0

您確定要插入「您選擇租用電影A」到列股票嗎? – har07

回答

2

正如@afzalulh所說,刪除插入部分。並將myquery字符串更改爲:

var myquery = string.Format("UPDATE DVD SET Stock = Stock - 1 WHERE Title = @Title"); 
var row = DB_Latest.SelectedRow; 
var title = row.Cells[0].Text; 
var cmd = new OleDbCommand(myquery, conn); 
cmd.Parameters.AddWithValue("@Title", title); 

因此,您只更新所選DVD標題的庫存。在不添加WHERE子句的情況下,查詢將減少所有DVD的庫存。

+0

謝謝,我怎麼能改變查詢減少選擇的DVD而不是全部? – Beep

+0

@ har07 - 是的,沒有它不會工作。 – afzalulh

+0

啊我明白了,我會盡力謝謝你。 – Beep

1

要更新的股票,沒有必要插入。我相信這是你想要什麼:

protected void Button2_Click(object sender, EventArgs e) 
{ 

    var myquery = string.Format("UPDATE DVD SET Stock = Stock - 1"); 
    conn.Open(); 
    using (OleDbCommand cmd = new OleDbCommand(myquery, conn)) 
     cmd.ExecuteNonQuery(); 
    conn.Close(); 
    conn.Dispose(); 
} 

編輯:myquery應包括WHERE通過har07的建議。否則它會將所有DVD的存貨減少1.

+0

謝謝@afzalulh,應該刪除開放的連接,因爲它似乎是干涉 – Beep

+0

嗯,你的作品,但沒有在那裏,所以它刪除所有,當我嘗試包括在哪裏它不會工作 – Beep