避免在数据库上重复-Vb.net

时间:2019-07-19 15:26:03

标签: vb.net ms-access duplicates

我正在vb.net上进行编程,并使用ms-access和ADODB记录集。我认为我很难解释,希望你们能理解我的问题。 我想避免数据库中出现重复的Value,并且当要重复时,它不会添加任何内容。我有两个datagradeview。将我在访问表中拥有的所有组之一称为“ gridAllGroup”。另一个datagradeview在一个查询表中只有Groups,这个叫做gridGroup。我有一个按钮,它将选定的组从gridAllGroup传递到gridGroup。 实际上是3个网格。 首先是质询,然后选定的质询将使用来自该质询的组填充gridGroups。

我试图从ID Questionary和ID Group获取值,然后比较表中是否已经存在。.但是我认为我这样做是错误的方式。

这是将通过所选组的按钮

s = "Select * from rrQuestionaryGroup where ID_Questionary = " & Val(Trim(lblIDQuestionary.Text)) & " and ID_Group = " & Val(Trim(lblIDGroup.Text)) & ""

        retval = getRS(s, rs, False, serror)

        If retval Then
            MsgBox("Group already in this questionary")
        Else
            rs.AddNew()
            rs.Fields("ID_Questionary").Value = lblIDHoldQuestionary.Text
            rs.Fields("ID_Group").Value = lblIDHoldGroup.Text
            rs.Fields("Order").Value = lblIDHoldOrder.Text
            rs.Update()
            rs.Close()
        End If
Public Function getRS(ByVal sql As String, rs As ADODB.Recordset, ByVal RO As Boolean, ByRef sErro As String) As Boolean
        Dim Con As New ADODB.Connection

        On Error Resume Next
        Con.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users.mdb;Persist Security Info=true")
        Con.CursorLocation = ADODB.CursorLocationEnum.adUseClient

        rs.Open(sql, Con, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)
        If Err.Number = 0 Then
            Return True
        Else

            sErro = Err.Description
            Return False

        End If
        On Error GoTo 0


    End Function

我希望这是足够了解的信息。在此先感谢您的帮助,

1 个答案:

答案 0 :(得分:0)

如果GetRS()函数成功打开了True,则返回Recordset,但这并不能告诉我们有关Recordset是否包含记录的任何信息。为此,您必须使用RecordCount的{​​{1}}属性。像这样的东西。

Recordset