我正在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
我希望这是足够了解的信息。在此先感谢您的帮助,
答案 0 :(得分:0)
如果GetRS()
函数成功打开了True
,则返回Recordset
,但这并不能告诉我们有关Recordset
是否包含记录的任何信息。为此,您必须使用RecordCount
的{{1}}属性。像这样的东西。
Recordset