2014-09-22 82 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