2016-08-02 6 views
-4

Access 데이터베이스와 함께 VB를 만들고 있는데 버튼을 만들고 싶습니다. 삽입하려고하는 데이터가 중복되거나 내 데이터베이스와 비교되지 않는 곳을 확인하는 저장 버튼.레코드가 VB.net에 이미 있는지 확인하는 방법?

내 코드, 그리고 문제는 내가 입력 한대로 사용자가 이미 존재 함을 보여줍니다. 모든

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    MyConn = New OleDbConnection 
    MyConn.ConnectionString = connString 

    MyConn.Open() 
    If (ComboBox2.Text = "") And (ComboBox3.Text = "") 
     And (TextBox3.Text = "") And (ComboBox4.Text = "") 
    Then 
    MsgBox("Please fill-up all fields!") 
    Else 
    Dim theQuery As String = ("SELECT * FROM Table1 
     WHERE"" [Subject_Code][email protected]_Code ,[Day][email protected], 
       [Times][email protected] , [Lecture][email protected] and [Class_Room][email protected]_Room""") 

    Dim cmd1 As OleDbCommand = New OleDbCommand(theQuery, MyConn) 
    cmd1.Parameters.AddWithValue("@Subject_Code", TextBox6.Text) 
    cmd1.Parameters.AddWithValue("@Day", ComboBox2.Text) 
    cmd1.Parameters.AddWithValue("@Times", ComboBox3.Text) 
    cmd1.Parameters.AddWithValue("@Lecture", TextBox3.Text) 
    cmd1.Parameters.AddWithValue("@Class_Room", ComboBox4.Text) 

    Using reader As OleDbDataReader = cmd1.ExecuteReader() 
    If reader.HasRows Then 
    'User already exists 
    MsgBox("User Already Exist!") 
    Else 
    Dim Update As String = "INSERT INTO [Table1] 
    ([Subject_Code], [Subject], 
     [Day], [Times], [Level],[Semester], [Lecture],[Class], [Class_Room]) 
    VALUES (?,?,?,?,?,?,?,?,?)" 

    Using cmd = New OleDbCommand(Update, MyConn) 
     cmd.Parameters.AddWithValue("@p1", TextBox6.Text) 
     cmd.Parameters.AddWithValue("@p2", TextBox1.Text) 
     cmd.Parameters.AddWithValue("@p3", ComboBox2.Text) 
     cmd.Parameters.AddWithValue("@p4", ComboBox3.Text) 
     cmd.Parameters.AddWithValue("@p5", ComboBox1.Text) 
     cmd.Parameters.AddWithValue("@p6", ComboBox6.Text) 
     cmd.Parameters.AddWithValue("@p7", TextBox3.Text) 
     cmd.Parameters.AddWithValue("@p8", ComboBox5.Text) 
     cmd.Parameters.AddWithValue("@p9", ComboBox4.Text) 
     MsgBox("New Data Is Saved") 
     cmd.ExecuteNonQuery() 
    End Using 
    End If 
    End Using 
End If 
+3

SELECT 문자열에서 무엇을하고 있습니까? – Andre

+3

@Clavert 여기에는 작성되지 않은 규칙이 있습니다. '긴급'이라는 단어는 사용하지 마십시오. – reporter

+0

@reporter : 실제로 [매우 쓰여졌습니다] (http://meta.stackoverflow.com/q/326569/472495)';-)'. – halfer

답변

1

먼저 당신의 theQuery 변수를 간단히 살펴보고, 그것은 단지 당신이 SO로를 입력 한 곳에서, 부정 만하지 않으면 것은 시도되었을 수 있습니다 :

Dim theQuery As String = "SELECT * FROM Table1 " & 
          "WHERE [Subject_Code] = @Subject_Code " & 
          "AND [Day] = @Day " & 
          "AND [Times] = @Times " & 
          "AND [Lecture] = @Lecture " & 
          "AND [Class_Room] = @Class_Room" 

수표를 A에 대한 기존 사용자는 5 개의 필드를 기반으로하며, 새 데이터의 삽입에는 9 개의 필드가 있습니다. 비즈니스 사례를 모른 채 이것이 맞는지 또는 누락 된 4 개의 입력란이 실제로 수표에 중요하여 예기치 않은 행이 반환되는지 여부를 확신 할 수 없습니다.

  1. 가 AddWithValue 문에 중단 점을 넣고 당신이
  2. 실행 SSMS/액세스 또는 이에 상응하는 체크의 값으로 쿼리를 기대하는 것입니다 값을 확인 :

    개인적으로 내 다음 단계는 것 되돌아온 행이 예상 한 것입니다.

관련 문제