2014-09-22 56 views
-2

我想將「狀態」存儲到訪問時,當我單擊「是」時,但是當我單擊「是」時,它會顯示此錯誤消息。如何存儲msgbox值在VB.net中訪問數據庫?

**

您不能添加或更改記錄,因爲相關記錄表 'Userss'。>>需要

**

Private Sub btnContactOwner_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnContactOwner.Click 

    If MsgBox("Are you sure want to confirm this room?", MsgBoxStyle.YesNo, "Confirmation") = MsgBoxResult.Yes Then 
     status = "Non-Available" 
    Else 
     status = "Available" 



    End If 
    con = New OleDbConnection("Provider = Microsoft.ACE.OLEDB.12.0;Data Source=..\room.accdb") 
    con.Open() 
    sql = "Insert into room(status)values('" & status & " ')" 
    objcmd = New OleDbCommand(sql, con) 
    objcmd.ExecuteNonQuery() 
    con.Close() 

End Sub 
+1

聽起來你的'房間'表有一個外鍵列給你的用戶表?你能發表關於你的表格的全部細節嗎? – 5uperdan 2014-09-22 13:23:54

+0

同意@ 5uperdan。猜測它有一個需要插入的房間號碼?或者更新已經存在的房間? – Capellan 2014-09-22 14:20:03

+0

@ 5uperdan 我在房間表和我的用戶表之間有外鍵,這裏我附上截圖的鏈接 http://oi60.tinypic.com/vn19ir.jpg – 2014-09-22 14:39:09

回答

0

你試圖在你的房間表中創建一行,並且只爲狀態列指定一個值。 Your Room表的'StudentID'列對錶'Users'有一個外鍵約束。要在房間表中創建一行,您還需要爲「StudentID」列指定一個值。

sql = "Insert into room(status,studentID) values('" & status & "'," & studentID & ")" 

其中studentID是從Userss表中的有效整數

您可能也想看看parameterised queries

和/或String.Format方法:

sql = String.Format("Insert into room(status,studentID) values('{0}',{1})", status, studentID) 
+0

我嘗試了你的方法,它很好用,謝謝你非常感謝:) – 2014-09-23 14:58:55