2016-12-25 41 views
0

我想讓用戶知道他們想要刪除的數據具有值。如何通知用戶要刪除/更新的數據具有臨界值?

例如:用戶想要刪除記錄「數學」科目,但是有學生在該科目中註冊,所以用戶不能刪除記錄「數學」。

我想知道這在c#中的語法。是的,我知道如何使用「刪除」語法,但我想讓用戶知道他們想刪除的記錄有一些有價值的信息。讓用戶知道他們即將刪除關鍵數據。我知道這也可以在VB中使用

Private Sub btnDelete_Click(sender As Object, e As EventArgs) Handles btnDelete.Click 
    If DTTable("SELECT * ", "tblSubjectsEnrolled", " WHERE CtrlNumber ='" & IDNumber & "'").Rows.Count > 0 Then 
     MessageBox.Show("The subject schedule cannot be deleted, because there are still students enrolled in it!", "Delete!", MessageBoxButtons.OK, MessageBoxIcon.Error) 
    Else 
     If MessageBox.Show("The operation cannot be undone! Continue?", "Delete", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then 
      RecordRow("DELETE FROM [tblOfferedSubjects] WHERE [CtrlNumber]='" & IDNumber & "'") 

      btnSearch.PerformClick() 
      MessageBox.Show("Record Deleted!", "Delete", MessageBoxButtons.OK, MessageBoxIcon.Asterisk) 
      SelectRecord() 
     End If 
    End If 
End Sub 

Public Sub RecordRow(ByVal sql As String) 
    Dim con As OleDb.OleDbConnection = New OleDb.OleDbConnection(conStr) 
    Dim cmd As New OleDb.OleDbCommand 
    cmd.CommandType = CommandType.Text 
    cmd.CommandText = sql 
    cmd.Connection = con 
    con.Open() 
    cmd.ExecuteNonQuery() 
    con.Close() 
End Sub 
Public Function DTTable(ByVal sql As String, ByVal tName As String, ByVal filter As String) As DataTable 
    Dim connection As New OleDb.OleDbConnection(conStr) 
    Dim dataAdapter As New OleDb.OleDbDataAdapter 
    Dim ds As New DataSet 
    dataAdapter = New OleDb.OleDbDataAdapter(sql + " from " + tName + filter, connection) 
    dataAdapter.Fill(ds, tName) 
    Return ds.Tables(tName) 
End Function 

我想在代碼中使用類似的東西。我也嘗試將該代碼轉換爲C#,但我無法獲得DTTable().Rows.Count> 0,因爲.Rows不能以void值開頭。有人可以幫我弄這個嗎?

我展示了可以幫助您理解問題的完整代碼片段。 PS:上面顯示的代碼不是我的。我只是用它作爲這個問題的一個例子。 PPS:
我想限制用戶刪除整個記錄。讓我們說在類別中,有子類別。如果用戶想要刪除具有子類別的類別,則不允許用戶刪除該類別,除非其中沒有任何子類別。

+0

你應該顯示代碼的特定部分,而不是複製粘貼整個代碼文件。 – DarkKnight

+0

@DarkKnight我已經說過我有錯誤的具體部分(DTTable().Rows.Count> 0) –

回答

0

正如你已經提到,你知道刪除語法,你唯一的問題似乎是顯示消息。

它實際上類似於VB中使用的方法。

// Delete confirmation 
if (MessageBox.Show ("The operation cannot be undone! Continue?", "Delete", 
     MessageBoxButtons.YesNo, MessageBoxIcon.Question) 
     == DialogResult.Yes) 
{ 
    //Delete the row 
} 

更多deatils參考:

+0

我想限制用戶刪除整個記錄。讓我們說在類別中,有子類別。如果用戶想要刪除具有子類別的類別,則不允許用戶刪除該類別,除非其中沒有任何子類別。 –

+0

你可以通過使用外鍵來實現這一點,表'tblOfferedSubjects'有一行「Math」,在'tblSubjectsEnrolled'表中使用這個行id作爲外鍵作爲像'subject'這樣的字段。 當用戶嘗試刪除「Math」時,只需在'tblSubjectsEnrolled'表中查找id爲「Math」的行作爲外鍵(存儲「math」的行標識的字段)。 請注意,這兩個表的主鍵(id)是不同的。 –

+0

@RubyRaeOlaya如果您在代碼中使用的「CtrlNumber」字段是「tblOfferedSubjects」的主鍵和「tblSubjectsEnrolled」的外鍵,那麼您就很好。 「IDNumber」是試圖刪除的行用戶的行ID。 –

相關問題