2017-02-21 137 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

好的,我正在编辑我的答案,并检查它是否适用于您或帮助您,并让我知道... –