2017-02-21 83 views
1

這是我在Visual Basic上的代碼中的一部分。 當我嘗試輸入一個記錄是在數據庫中已經存在,程序應該提示我有一個重複...如何防止在數據庫中輸入重複記錄?

這裏是我的代碼:

程序添加記錄

   recSet.Open("SELECT * FROM Prod ", connection, 3, 3) 
      recSet.AddNew() 
      recSet.Fields("prodSKU").Value = prodSKU.Text 
      recSet.Fields("prodName").Value = prodName.Text 
      recSet.Fields("prodSRP").Value = prodSRP.Text 
      recSet.Fields("prodDesc").Value = prodDesc.Tex 
      recSet.Fields("prodUnit").Value = comboUnit.Text 
      recSet.Fields("ClassDisc").Value = classDisc.Text 
      recSet.Fields("ProdCateg").Value = comboCtgry.Text 

       recSet.Update() 
       recSet.Close() 
       MsgBox("Records added succesful!", MsgBoxStyle.Information, "Success!") 
       'COMOB BOXES' 
       comboUnit.Items.Clear() 
       comboCtgry.Items.Clear() 

       recSet.Open("SELECT DISTINCT prodUnit from Prod", connection, 3, 3) 
       Do While Not recSet.EOF 
        comboUnit.Items.Add(recSet.Fields("prodUnit").Value) 
        recSet.MoveNext() 
       Loop 
       recSet.Close() 
       recSet.Open("SELECT DISTINCT prodCateg from Prod", connection, 3, 3) 
       Do While Not recSet.EOF 
        comboCtgry.Items.Add(recSet.Fields("prodCateg").Value) 
        recSet.MoveNext() 
       Loop 
       recSet.Close() 

       prodSKU.Text = "" 
       prodName.Text = "" 
       prodSRP.Text = "" 
       prodDesc.Text = "" 
       classDisc.Text = "" 
       comboCtgry.Text = "" 
       comboUnit.Text = "" 

回答

0

回答更新爲以前的答案是SQL數據庫,但@DatNoobPotatoPCGuy表示他的數據庫是MS Access數據庫。

Dim con As OleDbConnection = New OleDbConnection() 
Dim cmd As OleDbCommand = Nothing 
Dim numberOfRecords as Int = 0; 
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=pathToDatabase" 
con.Open() 
cmd = New OleDbCommand("Select count(*) From Prod where prodSKU = @prodSKU AND prodName = @prodName AND prodSRP = @prodSRP AND prodDesc = @prodDesc AND prodUnit = @prodUnit AND ClassDisc = @ClassDisc AND ProdCateg = @ProdCateg", con) 
With cmd 
     .Parameters.AddWithValue("@prodSKU", prodSKU.Text) 
     .Parameters.AddWithValue("@prodName", prodName.Text) 
     .Parameters.AddWithValue("@prodSRP", prodSRP.Text) 
     .Parameters.AddWithValue("@prodDesc", prodDesc.Text) 
     .Parameters.AddWithValue("@prodUnit", comboUnit.Text) 
     .Parameters.AddWithValue("@ClassDisc", classDisc.Text) 
     .Parameters.AddWithValue("@ProdCateg", comboCtgry.Text) 
End With 
numberOfRecords = cmd.ExecuteScalar() 
If numberOfRecords <> 0 Then 
    MsgBox("Row(s) in database with following data are already exist!",MsgBoxStyle.OkOnly + MsgBoxStyle.Critical, "Are you trying to insert same record?") 
    Exit Sub 
Else 
    'Your code to insert data 
End If 

試試這個代碼,並請讓我們知道您的結果。

注:我從來沒有使用MS Access數據庫,並沒有關於它的想法,但因爲我看到你在這個問題上,沒有真正幫助你,所以我盡力了,所以真的爲我的錯誤:)

對不起
+0

將表拖到ProdD.dbml不斷告訴我該文件不受支持...使用MS Access 2007和MS Visual Studio 2010 – DatNoobPotatoPCGuy

+0

@DatNoobPotatoPCGuy哦!我直接從Visual Studio中使用「基於服務的數據庫」的方法,但是因爲你使用的是MS Access數據庫,所以也許這就是創建錯誤**「Unsupported!」**順便說一句,我會盡力爲你獲得更多的信息如果到那時你還沒有解決,現在一點忙也沒有! :) –

+0

好的,我正在編輯我的答案,並檢查它是否適用於您或幫助您,並讓我知道... –