2014-02-26 88 views
1

我試圖刪除我的數據庫中將更新兩個不同表中的值的記錄。我有一張學生表和一張登記表。如果學生ID(和其他信息)被刪除,那麼它應該自動刪除Student表和Student ID相同的Enroll表。如果我只是從Student表中刪除該行,sql會嘗試工作,但它表示它不能,因爲該值也包含在Enroll表中。這裏是我對整個刪除按鈕的代碼。我不斷收到一條錯誤消息,說明指定我想從中刪除的表,所以我猜測我在第二個表名中添加的語法是錯誤的。有沒有人知道我需要做什麼? 此外,我很想添加一條消息,詢問用戶是否確定要刪除記錄,我該怎麼做? 謝謝!在Visual Studio 2012中編寫DELETE查詢

私人小組的button1_Click(發送者爲對象,例如作爲EventArgs的)把手Button1.Click 昏暗CMD作爲OleDb.OleDbCommand =無 昏暗康恩作爲OleDb.OleDbConnection =無

Try 
     conn = New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\csc420\UniversityClassDatabase.accdb") 
     cmd = New OleDb.OleDbCommand(
      "Delete From Student,Enroll where [Student.stID] = [Enroll.stID] AND [Student.stID][email protected]", conn) 
     cmd.CommandType = CommandType.Text 

     conn.Open() 
     cmd.Parameters.AddWithValue("@sid", stID.Text) 


     cmd.ExecuteNonQuery() 
     MsgBox("Record Deleted") 


    Catch ex As Exception 
     lblresult.Text = ex.Message() 
    Finally 
     conn.Close() 

    End Try 
End Sub 
+0

只需插入Bobby Tables作爲學生。 https://xkcd.com/327/(對不起,無法抗拒) – Krumelur

回答

2
delete from student s where s.stID = @sid; 
delete from enroll e where e.stID = @sid; 

嘗試。您基本上只需要分別刪除每個表,但如果以分號結束刪除命令,並將其包含在一個命令中,則它將像單個刪除一樣運行。

+3

您可能需要先刪除註冊記錄 –

+0

我正在嘗試此操作,我有此代碼,並且它仍然在第二條刪除語句中給我一個錯誤: – user3357808

+0

嘗試 conn =新的OleDb.OleDbConnection(「Provider = Microsoft.ACE.OLEDB.12.0;數據源= F:\ csc420 \ UniversityClassDatabase.accdb」) cmd =新的OleDb.OleDbCommand( 「DELETE FROM Enroll WHERE [註冊表編輯器],然後點擊「確定」。 cmd.CommandType = CommandType.Text conn.Open() cmd.Parameters.AddWithValue( 「@ SID」,stID.Text) cmd.ExecuteNonQuery() MSGBOX( 「記錄中刪除」) – user3357808

2

如果您的表格設置爲Cascading deletes那麼從Student表中刪除記錄應該刪除記錄表格Enroll表。

否則,您將需要2個DELETE語句。 SQL應該是類似於

DELETE FROM Enroll WHERE [Enroll.stID] = @sid 
Delete FROM Student WHERE [Student.stID] = @sid 
+0

怎麼辦我設置級聯刪除? – user3357808

+0

@ user3357808如果您正在使用MS Access [本文](http://office.microsoft.com/en-us/access-help/delete-one-or-more-records-from-an-access-database -HA001173951.aspx)將有所幫助。搜索「級聯刪除相關記錄」。 – user2989408