2016-07-17 8 views
0

私はちょうど私が働いている小さなプロジェクトに新しい追加をテストしています。私はそれにデータグリッドビューとデータの行を削除するオプションを持つフォームがあります。ラベルのテキストをその行の列に変更するためのコードがあります。削除ボタンは、ラベルが変更されているかどうかを確認し、SQLステートメントを実行してレコードを削除するかどうかを確認します。しかし、私の問題は、私が[いいえ]メッセージボックスを削除する確認で選択した場合でもIFステートメントはレコードを削除するコードを実行します。vb.net別のIFステートメントで囲まれたIFステートメントは、trueを返し、条件がfalseを指しても 'false'コードを実行しません。

私が使用しているコードはありますが、私はこれを行うためのより良い方法がたくさんあると思いますが、建設的な批判が受け入れられるように、より多くのアプリケーションを開発する際に学びます。

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles  Button1.Click 
    Dim con As New OleDb.OleDbConnection 
    con.ConnectionString = My.Settings.databaseConnectionString 
    If idToDel.Text = "No Reservation Selected" Then 
     MsgBox("Please ensure a reservation is selected", MsgBoxStyle.OkOnly) 
    Else 
     MsgBox("Confirm the deletion of the reservation: " & idToDel.Text, MsgBoxStyle.YesNo) 
     If DialogResult.Yes Then 
      Try 
       Dim comm As String = "DELETE FROM Reservations WHERE [Customer Name]='" & idToDel.Text + "'" 
       Dim sqlComm As New OleDb.OleDbCommand(comm, con) 
       con.Open() 
       sqlComm.ExecuteNonQuery() 
       MsgBox("Successfully deleted the reservation: " & idToDel.Text) 
       con.Close() 
       Me.ReservationsTableAdapter.Update(Me.HotelDataSet.Reservations) 
       Me.ReservationsTableAdapter.Fill(Me.HotelDataSet.Reservations) 
      Catch ex As Exception 
       MsgBox(ex.ToString) 
      End Try 
     ElseIf DialogResult.No Then 
      Me.Close() 
     End If 
    End If 

End Sub 

答えて

3

問題は、MsgBox値を割り当てる変数がないことに関連しています。 MsgBoxResult型の変数を構成する必要があります。

参照:

Dim resp As MsgBoxResult = MsgBox("Confirm the deletion of the reservation: " & idToDel.Text, MsgBoxStyle.YesNo) 
If resp = MsgBoxResult.Yes Then 
    ... 
ElseIf resp = MsgBoxResult.No Then 
    Me.Close() 
End If 
+3

**この回答に加えて:** 'DialogResult.Yes'が原因それは文は常にと評価されます0よりも大きいことにちょうど列挙、数であり、 「真」。だから 'DialogResult.Yes Then'は' If 6 Then'と同じです。 –

+1

@VisualVincentを編集していただきありがとうございます:) –

関連する問題