2016-12-25 6 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で使用されている方法と似ています。よりdeatilsについては

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

を参照してください。

+0

私はレコード全体を削除するようにユーザーを制限したかったのです。カテゴリでは、サブカテゴリがあるとします。ユーザがサブカテゴリを有するカテゴリを削除したい場合、サブカテゴリを持たない限り、ユーザはそのカテゴリを削除することができない。 –

+0

これは外部キーを使って実現できます。テーブル 'tblOfferedSubjects'には" Math "の行があり、この行IDを' tblSubjectsEnrolled'テーブルの 'subject'のようなフィールドとして外部キーとして使用します。 ユーザーが "Math"を削除しようとすると、IDが "Math"の外部キー( "math"の行IDを格納するフィールド)として、 'tblSubjectsEnrolled'テーブルの行を探します。 両方のテーブルの主キー(id)が異なることに注意してください。 –

+0

@RubyRaeOlayaあなたのコードで使用した 'CtrlNumber'フィールドが' tblOfferedSubjects'のプライマリキーで、 'tblSubjectsEnrolled'の外部キーであれば、いいです。 'IDNumber'は削除しようとしている行ユーザの行IDです。 –

関連する問題